1. 背景——Fabonacci數列的介紹(摘自百度百科):
斐波那契數列(Fibonacci sequence),又稱黃金分割數列。因數學家列昂納多·斐波那契(Leonardoda Fibonacci )以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……用公式定義如下:
計算通式為:
當n趨向於無窮大時,前一項與后一項的比值越來越逼近黃金分割0.618
2. 用Python迭代實現求解Fibonacci數列的第n項
def fib_iter(n): n1 = 1 n2 = 1 n3 = 1 if (n < 1): print("Wrong input! ") return -1 else: while (n-2) > 0: n3 = n2 + n1 n1 = n2 n2 = n3 n -= 1 return n3 result = fib_iter(35) if result != -1: print(result)
優點:當n數值較大時,求解速度較遞歸法快
缺點:代碼不簡潔易懂
3. 用Python遞歸實現求解Fibonacci數列的第n項
def fib_re(n): result = 0 if(n < 1): print("Wrong input! ") return -1 else: if(n == 1 or n == 2): return 1 else: return fib_re(n-1) + fib_re(n-2) result = fib_re(35) if result != -1: print(result) #分治思想
優點:代碼簡潔易懂
缺點:當n數值較大時,反復的出棧和壓棧操作使得運行時間很長