冰雹序列
首页
项目
百科
挑战
周边
捐赠
关于
拉格朗日计划
冰雹序列
冰雹猜想是指,任意自然数n反复执行以下操作后都会变成1:
若n是偶数,则
n
↦
n
/
2
。
若n是奇数,则
n
↦
3
n
+
1
。
从n最终变成1所得序列的长度称为n的步数. 例如10的步数是6:
10
↦
5
↦
16
↦
8
↦
4
↦
2
↦
1.
打印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>
1
else
j n=
1
while
n<
1001
:
print
(f(n,
0
));n+=
1