此Python函数根据Collatz猜想输出一个列表.这是一个未解决的数学问题,其中该函数将根据它是奇数还是偶数对‘n’执行不同的操作,每次函数重复时将‘n’输出到名为‘seq’的列表中.一旦数字‘16’出现在‘链’中,‘n’最终将衰减到终点(‘1’).
在这里,我试图使代码尽可能简洁.有什么办法可以缩短功能吗?
这是我的新手Python代码:
def collatz(n):
seq = []
n = int(n)
if n == 0:
return
elif n == 1:
return seq + [n]
elif n > 1 == True and n % 2 == 0:
return seq + [n] + collatz(n/2)
else:
return seq + [n] + collatz(3*n+1)
print(collatz(7))
这将输出
[7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]