LeetCode 202 快乐数(Python)代码疑问:输入19返回False求解释
问题分析与解决
你的代码问题出在递归调用时没有返回递归结果。
看这段代码:
else: visit.add(n) happy(n)
当你递归调用happy(n)时,没有用return把递归的结果传递回去。比如计算到最后得到n=1时,递归最内层返回了True,但上层递归函数只是执行了happy(n),并没有把这个True返回给更上层,最终最外层的happy(n)会因为没有明确返回值而返回None,而Python中None会被LeetCode判定为False,这就是输入19时结果不对的原因。
修改方法很简单,把递归调用改成返回:
else: visit.add(n) return happy(n)
修改后的完整代码:
class Solution: def isHappy(self, n: int) -> bool: visit = set() def happy(n): temp = n n = 0 for i in str(temp): n += int(i)**2 if n == 1: return True elif n in visit: return False else: visit.add(n) return happy(n) return happy(n)
这样当递归到n=1返回True时,这个结果会逐层传递回最外层,最终返回正确的True。
内容的提问来源于stack exchange,提问作者user19882839
相关产品推荐
相关产品推荐

