1. 程式人生 > >python程式-->Collatz 序列問題

python程式-->Collatz 序列問題

這個問題是某本python書籍課後實踐專案題,不過沒給答案

     內容大致如下:

    編寫一個名為collatz()的函式,有一個名為number的引數。如果引數是偶數,那麼collatz()就列印number / /2 ,並返回其值。如果number是奇數,collatz()就列印並返回3 *number +1

     改成程式,讓使用者輸入任意一個數,通過對該數字不斷呼叫collatz(),直到返回1,(為什麼返回1,數學家也很困惑)

     大概就是這樣的,數字隨意輸入

         Enter number:

         3

        10

 5

16

8

4

2

1

程式碼如下:

def collatz(number):
    if number % 2 == 0:
        return number // 2
    else:
        return 3 * number +1


    
number = int(input())
while True:
    number = collatz(number)
    print(str(number))
    if number == 1:
        break
print(str(number))