为什么python递归函数返回None而不是boolean?

为什么python递归函数返回None而不是boolean?,python,python-3.x,recursion,Python,Python 3.x,Recursion,问题是: 写一个算法来判断一个数字是否“快乐” 快乐数是由以下过程定义的数字:从任何正整数开始,用其数字的平方和替换该数字,然后重复该过程,直到该数字等于1(它将保持不变),或者在不包括1的循环中无限循环。这个过程以1结尾的数字是快乐数字 Example: Input: 19 Output: true Explanation: 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1 我的代码如下: class S

问题是:

写一个算法来判断一个数字是否“快乐”

快乐数是由以下过程定义的数字:从任何正整数开始,用其数字的平方和替换该数字,然后重复该过程,直到该数字等于1(它将保持不变),或者在不包括1的循环中无限循环。这个过程以1结尾的数字是快乐数字

Example: 

Input: 19
Output: true
Explanation: 
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
我的代码如下:

class Solution:
    def isHappy(self, n):

        x = sum(list(map(lambda a: int(a)**2, list(str(n)))))
        if x == 1:
            return True

        self.isHappy(x)
但是它在输入为19时不起作用。程序在x==1时终止,这意味着它使用if条件。但它一直说它返回“Null”而不是True。为什么会这样?我假设我缺少递归的东西


问题来源:

当第一次迭代没有给出1作为总和时,您不会返回任何内容。将最后一行改为

return self.isHappy(x)

(然后你会发现你的解决方案在出现一个不满意的数字时会进入一个无限循环。)

如果
x!=1
?您需要返回
self.isHappy(x)
,否则它将不会返回堆栈顶部。除此之外,您还没有处理无限循环-不涉及-1的情况。