我正在使用递归来寻找一个快乐数。
以下是我的Python代码:
deepth = 0
def is_happy_number(number):
astring = str(number)
global deepth
digits = [int(char) for char in astring]
sum_digit = sum([digit**2 for digit in digits])
if sum_digit == 1:
deepth = 0
return True
else:
deepth += 1
if deepth >800:
return False
return is_happy_number(sum_digit)
print '7',is_happy_number(7)
for number in range(1,11):
print number,is_happy_number(number)
结果如下:
7 True
1 True
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
10 True
当我单独测试数字7时,它返回“True”。但是当我运行最后两行代码时,数字7返回“False”。
我不知道哪个部分有问题。
几分钟后,我在我的Python代码中找到了错误部分。 然后我添加了:
deepth = 0
之后:
if deepth > 800:
在@Will的提醒下,我找到了另一种解决此问题的方法。修改后的代码如下:
def is_happy_number(number, deepth=0):
astring = str(number)
digits = [int(char) for char in astring]
sum_digit = sum([digit**2 for digit in digits])
if sum_digit == 1:
return True
else:
deepth += 1
if deepth >800:
return False
return is_happy_number(sum_digit,deepth)
print '7',is_happy_number(7,0)
for number in range(1,10):
if is_happy_number(number,0):
print number,
global deepth
变量可能与此有关(顺便说一下,“deepth”应该拼成“depth”)。 - barak manos