冰雹序列
* * * *
拉格朗日计划
* * * *
冰雹序列

冰雹猜想是指,任意自然数n反复执行以下操作后都会变成1:

若n是偶数,则nn/2

若n是奇数,则n3n+1

从n最终变成1所得序列的长度称为n的步数. 例如10的步数是6: 105168421. 打印1到1000之间(包括1和1000)每个数的步数,每条单独打印一行。

本题难度:



解答

递归计算代码更短(当然,缓存结果更有效率),用i,j分别表示当前数和步数。

最终代码有三行。

代码长度:85字节 vs. 全站第一:68字节。

f=lambda i,j:f([i//2,3*i+1][i%2],j+1)if i>1else j
n=1
while n<1001:print(f(n,0));n+=1