count = []
def problem14(n):
count.append(n)
if n == 1:
return count
if n % 2 == 0:
n = n/2
problem14(n)
else:
n = 3*n + 1
problem14(n)
print problem14(13)
所以这是我写的代码。我不知道为什么它会返回None,而在我看来它应该返回列表'count'。有什么帮助吗?
答案 0 :(得分:9)
使用递归时仍需要return语句,否则返回值将丢失:
def problem14(n):
count.append(n)
if n == 1:
return count
if n % 2 == 0:
n = n/2
return problem14(n) # <--
else:
n = 3*n + 1
return problem14(n) # <--
顺便说一句,对于Project Euler#14来说,这可能是错误的方法:-)考虑使用dynamic programming方法(这就是我所说的,以免破坏乐趣)。
答案 1 :(得分:1)
您应该使用return关键字来return
函数中的值。
return problem14(n)