用Python實現“Collatz序列”


 

 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM