費氏數列源起於 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