所以我有这个Collatz猜想。基本上我必须编写一个程序,我给它编号,它将计算Collatz猜想。这是我的问题:将出现的数字将如下所示:
12
6
3
10
5
16
8
4
2
1
当它们应该在这样的列表中[12,6,3,10,5,16,8,4,2,1]。
这是我的代码:
n = int(input("The number is: "))
while n != 1:
print(n)
if n % 2 == 0:
n //= 2
else:
n = n * 3 + 1
print(1)
答案 0 :(得分:2)
您必须将数字存储在列表中
result = []
while n != 1:
result.append(n)
if n % 2 == 0:
n //= 2
else:
n = n * 3 + 1
result.append(n)
print result
答案 1 :(得分:1)
这也是一种选择。一个愚蠢的,但仍然:
n = int(input("The number is: "))
print('[', end='')
while n != 1:
print(n, end=', ')
if n % 2 == 0:
n //= 2
else:
n = n * 3 + 1
print('1]')
答案 2 :(得分:0)
递归版,只是为了好玩:
number = int(input("the number is: "))
def collatz(n):
if n == 1:
return [n]
elif n % 2 == 0:
return [n] + collatz(n/2)
else:
return [n] + collatz((3*n)+1)
print collatz(number)