冰雹序列
首页
项目
百科
挑战
周边
捐赠
关于
拉格朗日计划
冰雹序列
冰雹猜想是指,任意自然数n反复执行以下操作后都会变成1:
若n是偶数,则$n\mapsto n/2$。
若n是奇数,则$n\mapsto 3n+1$。
从n最终变成1所得序列的长度称为n的步数. 例如10的步数是6: $$10\mapsto5\mapsto16\mapsto8\mapsto4\mapsto2\mapsto1.$$ 打印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