假設一對幼年兔子需要一個月長成成年兔子,一對成年兔子一個月后每個月都可以繁衍出一對新的幼年兔子(即兔子誕生兩個月后開始繁殖)。不考慮死亡的情況,問第 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)