Collatz Conjecture,也称为二分之一或三加一(HOTPO),以任意正整数n开始。
如果n是偶数,则将其除以2。如果n是奇数,则将其乘以3并加1。猜测是,无论你从哪个数字开始,它总是会达到1。
所面临的挑战是编写一个程序来输出n的所有值以及所需的步数。例如,当n= 3时,输出应为:
3
10
5
16
8
4
2
1
Finished. 7 steps required.我最好的尝试是6行:
x = [3]
while x[-1] != 1:
if x[-1] % 2 == 1: x.append(3*x[-1]+1)
x.append(x[-1]/2)
for num in x: print num
print "Finished. " + str(len(x)-1) + " steps needed."对于任何大小合理的n,生成此输出所需的最小行数是多少?我的代码还能进一步减少吗?
https://stackoverflow.com/questions/44511460
复制相似问题