費氏數列 Fibonacci sequence

費氏數列源起於 13 世紀義大利的數學家 Fibonacci,亦稱為黃金分割數列。
其特性為

  • (n≧2)

詳細的介紹可參考維基百科這篇說明

利用迴圈時可寫成

fibos=[1,1]
for i in range (2 , 10 ): 
   fibos.append(fibos[-1] + fibos[-2])
print (fibos)

我們先把第一個與第二個數列放入陣列中,以符合前面的 F0與 F1,接下來的數最再利用迴圈完成。記得如果這樣寫的話,若要求到100則必須更改迴圈內的數據。

換成遞迴函氏可寫成:

def fibo(n):
if n == 1:
return [1]
if n == 2:
return [1, 1]
fibos = [1, 1]
for i in range(2, n):
fibos.append(fibos[-1] + fibos[-2])
return fibos

print (fibo(10))

這個寫法需注意如果數字過大可能會觸發 RecursionError,
查詢系統預設值:

import sys
sys.getrecursionlimit()
1000  #1000 即是觸發 RecursionError的值

若還是需要計算請更改sys.setrecursionlimit(limit) 的設定

import sys
sys.getrecursionlimit(2000)
# 接著原來的程式碼

這樣就可以把系統的 recursionlimit 值改為 2000

發表迴響