python 迭代法和遞迴 實現斐波那契演算法
阿新 • • 發佈:2018-11-03
題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
1.程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21….
由規律可知:
f(n) = f(n-1)+f(n-2)
符合斐波那契數列(斐波那契數列係數就由之前的兩數相加)
作者:澤陽ZMQ
來源:CSDN
原文:https://blog.csdn.net/jixian269/article/details/51530523
版權宣告:本文為博主原創文章,轉載請附上博文連結!
def fab(n): #宣告函式 n1 = 1 n2 = 1 n3 = 1 if n < 1: return -1 while (n-2) > 0: #如果n給的值減去2大於0開始迴圈 n3 = n2 + n1 #n3=n2+n1 n1 = n2 #重新給賦值將n2 賦值給n1 n2 = n3 #重新賦值將上面n3 賦值給n3 n -= 1 #如果n的值是20的話每次減一。 return n3 #返回n3的值 sam = fab(12) if sam != -1: print('總共有%d小兔崽子' % sam) #遞迴方式實現 #有點程式碼簡練,易於理解,缺點執行速度慢。 def fab(n): if n < 0 : return -1 if n == 1 or n == 2 : return 1 else: return fab(n-1) + fab(n-2) max = fab(20) if max != -1: print('總共有%d小兔崽子' % max)