我正在尝试编写一个程序来找到快乐的数字: more info here. 这不是学校的作业,但我只是想练习我的python2.7。 基本上,递归是其中的一个重要部分,因为我必须保持每个数字的平方。 在我的代码中,我使用递归来继续运行它,我有一个基本情况,它可以工作,但是由于某些原因,即使我调用函数,也没有递归发生。 它只返回第一个数字的平方,这是一个bug测试,它返回None,然后停止运行。 怎么了?在
num = raw_input('Pick a positive integer that you want to check for a happy number')
def happyn(number,second,third,fourth):
if len(number) == 2:
go = int(number[0])**2 + int(number[1])**2
elif len(number) == 3:
go = int(number[0])**2 + int(number[1])**2 + int(number[2])**2
elif len(number) == 4:
go = int(number[0])**2 + int(number[1])**2 + int(number[2])**2 + int(number[2]**2)
if len(number) == 1 and int(number) == 1 or int(number) == 7:
return True
elif len(number) == 1:
return False
else:
print go
go = str(go)
go1 = go[0]
print go1
if len(go) == 1:
go1 = go[0]
happyn(go1,0,0,0)
elif len(go) == 2:
go1 = go[0]
go2 = go[1]
happyn(go1,go2,0,0)
elif len(go) == 3:
go1 = go[0]
go2 = go[1]
go3 = go[2]
happyn(go1,go2,go3,0)
elif len(go) == 4:
go1 = go[0]
go2 = go[1]
go3 = go[2]
go4 = go[4]
happyn(go1,go2,go3,go4)
print happyn(num,0,0,0)
您没有返回递归调用的结果,即
return happyn(go1, 0, 0, 0)
。在Python中,没有return
语句的任何函数都隐式返回None
。这并不是一个使用递归的好地方;一个简单的
while
循环更适合。在所有可能的执行分支必须返回某些内容,否则递归将无法工作。例如,这是错误的:
如果没有显式返回,则函数将返回
^{pr2}$None
。因此,正确的方法是:函数中的所有其他出口点也是如此。在
相关问题 更多 >
编程相关推荐