为什么我的python递归函数返回None而不是布尔值?

时间:2018-06-07 20:14:47

标签: python python-3.x recursion

问题是:

编写一个算法来确定一个数字是否为#34;快乐"。

幸福数字是由以下过程定义的数字:从任何正整数开始,将数字替换为其数字的平方和,并重复该过程,直到数字等于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"而不是真。为什么是这样?我假设我错过了递归的内容......?

问题来源:https://leetcode.com/problems/happy-number/description/

1 个答案:

答案 0 :(得分:1)

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

return self.isHappy(x)

(然后,当您收到不满意的号码时,您会发现您的解决方案进入无限循环。)