1 #coding=GBK 2 ''' 3 編寫一個名為collatz()的函數, 它有一個名為number的參數。 如果參數是偶數, 那么collatz()就打印出number // 2, 並返回該 4 值。 如果number是奇數, collatz()就打印並返回3 * number + 1。 5 然后編寫一個程序, 讓用戶輸入一個整數, 並不斷對這個數調用collatz(), 直到函數返回值1( 令人驚奇的是, 這個序列對 6 於任何整數都有效, 利用這個序列, 你遲早會得到1! 既使數學家也不能確定為什么。 你的程序在研究所謂的“Collatz序列”, 它 7 有時候被稱為“最簡單的、 不可能的數學問題”) 。 8 ''' 9 def collatz(number): 10 while True: 11 if number%2==0: 12 number=number/2 13 print(number) 14 elif number%2==1 and number!=1: 15 number=3*number+1 16 print(number) 17 elif number==1: 18 break 19 collatz(int(input('請輸入一個整數')))
備注里要求不斷調用函數collatz(),我這個只調用了一次
這個是不斷調用函數的寫法:
1 #coding=GBK 2 number=int(input('請輸入一個整數')) 3 def collatz(a): 4 global b 5 if a%2==0: 6 a=a/2 7 print(a)#最后當a等於2的時候執行2/2,並打印出1所以不用elif a==1 8 b=a 9 elif a%2==1 and a!=1: 10 a=a=3*a+1 11 print(a) 12 b=a 13 #elif a==1: 14 #print('dadsda') 15 while number!=1: 16 collatz(number) 17 number=b
