1. 程式人生 > 其它 >fibnacci 數列遞迴實現

fibnacci 數列遞迴實現

fibnacci 數列遞迴實現

什麼是fibnacci數列?

斐波那契數列(Fibonacci sequence),又稱黃金分割數列,因數學家萊昂納多·斐波那契(Leonardo Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……在數學上,斐波那契數列以如下被以遞推的方法定義:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用,為此,美國數學會從 1963 年起出版了以《斐波納契數列季刊》為名的一份數學雜誌,用於專門刊載這方面的研究成果。

斐波那契數列指的是這樣一個數列:

這個數列從第3項開始,每一項都等於前兩項之和。

它的遞迴表示式

Fibonacci數列:

F(1)=1

F(2)=1

F(n)=F(n-1)+F(n-2) (n>2)

遞迴表示式

def fib(n):  

    return 1 and n <= 2 or fib(n - 1) +fib(n - 2)
print('\n 最終結果為 %d'%(fib(n))) 

and

def fib(n):
    a,b=1,1
    for i in range(n):
        a,b=b,a+b
    return a

print(fib(10))
    
print(fib(100))

print(fib(1000))

print(fib(10000))

and

# Filename : test.py
# author by : www.runoob.com
 
def recur_fibo(n):
   """遞迴函式
   輸出斐波那契數列"""
   if n <= 1:
       return n
   else:
       return(recur_fibo(n-1) + recur_fibo(n-2))
 
 
# 獲取使用者輸入
nterms = int(input("您要輸出幾項? "))
 
# 檢查輸入的數字是否正確
if nterms <= 0:
   print("輸入正數")
else:
   print("斐波那契數列:")
   for i in range(nterms):
       print(recur_fibo(i))

用python或scratch遞迴實現Fib(n),並進行測試,在你的計算機上1分鐘內能計算出fib(10),fib(100),fib(1000),fib(10000)嗎?

用這種不到5秒全出來了

用這種上來就卡住了

最後一種最慢,算第三十項還行,第四十項就算不出來了