You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:51:31