【发布时间】:2019-08-21 08:55:03
【问题描述】:
我试图编写一个返回数字的 collatz 序列的递归函数,但代码(如下所示)不起作用。如何避免这种情况以及为什么会发生这种情况?
如果我写print(x)而不是return x,它可以正常打印,但我不知道为什么它不能返回x。
def collatz(x):
if x[-1] == 1:
return x
elif x[-1] % 2 == 0:
collatz(x + [x[-1]/2])
elif x[-1] % 2 == 1:
collatz(x + [3*x[-1] + 1])
【问题讨论】:
-
你返回 x,但在递归调用中你也应该返回。否则只有最里面的调用返回 x,但外部的调用不返回任何东西。基本上:
collatz(x +...->return collatz(x +...