1

だから私はこのコラッツ予想の課題を持っています. 基本的に、数値を与えるプログラムを作成する必要があり、それに対してコラッツ予想を計算します。ここに私の問題があります:出てくる番号は次のように書かれます:

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)
4

3 に答える 3

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]')
于 2013-11-05T14:19:50.653 に答える
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)
于 2013-11-05T15:04:17.487 に答える