[python]兔子問題,斐波那契數列 遞歸&非遞歸


假設一對幼年兔子需要一個月長成成年兔子,一對成年兔子一個月后每個月都可以繁衍出一對新的幼年兔子(即兔子誕生兩個月后開始繁殖)。不考慮死亡的情況,問第 N 個月時共有多少對兔子?

結果前幾個月的兔子數量為:1,1,2,3,5,8,13,21,34.......

發現規律:從第三個月開始,每個月的兔子數量為上個月與上上個月的兔子數量之和。

非遞歸:

#p6_7.py
#兔子問題
def fab(n):
    a1=1
    a2=1
    a3=1
    if n<1:
        print('輸入有誤')
        return -1
    while(n-2)>0:
        a3=a1+a2
        a1=a2
        a2=a3
        n-=1
    return a3
#m=int(input('請輸入整數'))
result=fab(35)
if result!=-1:
    print('總共有%d對小兔崽子誕生'%result)

遞歸解法:

#p6_8.py
#遞歸兔子問題
def fab(n):
    if n<0:
        print('輸入有誤')
        return -1
    if n==1 or n==2:
        return 1
    else:
        return fab(n-1)+fab(n-2)
result=fab(35)
if result!=-1:
    print('共有%d對小兔崽子誕生'%result)

 


免責聲明!

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



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