/ / Jak mogę umieścić te numery na liście? - python, list, collatz

Jak mogę umieścić te numery na liście? - python, list, collatz

Mam więc to domniemane zadanie Collatza. Zasadniczo muszę napisać program, któremu podaję numer, i będzie on kalkulował dla niego hipotezę Collatza. Oto mój problem: liczba, która wyjdzie, zostanie napisana w następujący sposób:

12
6
3
10
5
16
8
4
2
1

Kiedy powinny znaleźć się na liście [12, 6, 3, 10, 5, 16, 8, 4, 2, 1].

A oto mój kod:

n = int(input("The number is: "))
while n != 1:
print(n)
if n % 2 == 0:
n //= 2
else:
n = n * 3 + 1
print(1)

Odpowiedzi:

2 dla odpowiedzi № 1

Musisz przechowywać numery na liście

result = []
while n != 1:
result.append(n)
if n % 2 == 0:
n //= 2
else:
n = n * 3 + 1
result.append(n)

print result

1 dla odpowiedzi nr 2

Jest to również opcja. Głupi, ale wciąż:

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 dla odpowiedzi № 3

Wersja rekurencyjna, tylko dla zabawy:

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)