Então eu tenho essa tarefa de conjectura de Collatz. Basicamente eu tenho que escrever um programa para o qual eu dou number e ele irá calcular a conjectura de Collatz para ele. Aqui está o meu problema: o número que sairá será escrito assim:
12
6
3
10
5
16
8
4
2
1
Quando eles deveriam estar em uma lista como essa [12, 6, 3, 10, 5, 16, 8, 4, 2, 1].
E aqui está o meu código:
n = int(input("The number is: "))
while n != 1:
print(n)
if n % 2 == 0:
n //= 2
else:
n = n * 3 + 1
print(1)
Respostas:
2 para resposta № 1Você tem que armazenar os números em uma lista
result = []
while n != 1:
result.append(n)
if n % 2 == 0:
n //= 2
else:
n = n * 3 + 1
result.append(n)
print result
1 para resposta № 2
Esta também é uma opção. Um bobo, mas ainda assim:
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]")
0 para resposta № 3
Uma versão recursiva, apenas por diversão:
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)