问题是:
编写一个算法来确定一个数字是否为#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/
答案 0 :(得分:1)
当第一次迭代没有给出1作为总和时,你不会返回任何东西。将最后一行更改为
return self.isHappy(x)
(然后,当您收到不满意的号码时,您会发现您的解决方案进入无限循环。)