函式遞迴之斐波那契數列

2021-10-04 11:13:39 字數 843 閱讀 4100

背景

在函式遞迴問題中乙個典型問題是求解斐波那契數列

但是函式遞迴會面臨著資源的大量消耗問題

按照一種最為基本的寫法

#include

using

namespace std;

long

long

fib(

long

long a)

intmain()

cout<<

fib(n)

;return0;

}

在n<=50左右時,大概等幾秒鐘是可以得出答案的

然鵝一旦太大的話……

你也許就得等上老一會兒

下面是對該演算法的改進

#include

using

namespace std;

long

long

fibo

(long

long&,

long

long&,

int)

;int

main()

long

long a =

1, b =1;

cout<<

fibo

(a,b,n)

;return0;

}long

long

fibo

(long

long

&a,long

long

&b,int n)

return a;

}

這樣寫就可極大的縮短時間啦!!!

斐波那契數列之遞迴

斐波那契數列,又稱 分割數列,指的是這樣乙個數列 0 1 1 2 3 5 8 13 21 在數學上,斐波納契數列以如下被以遞迴的方法定義 f0 0,f1 1,fn f n 1 f n 2 n 2,n n 斐波那契數列最初是為了計算兔子的出生數量而出現的,所以也叫 兔子數列 遞迴的本質其實程式的方法自...

斐波那契數列之遞迴函式時間測試

在斐波那契數列遞迴中,因為每次計算第n位的結果時,都要呼叫 f n 1 f n 2 而f n 1 又要呼叫f n 1 1 f n 1 2 等f n 1 計算出來了,又要計算f n 2 f n 2 又要呼叫f n 2 1 f n 2 2 如此反覆下去,隨著n的增大,計算f n 的時間必然膨脹,時間複雜...

遞迴與斐波那契數列

迭代實現 def fab n a1 1 a2 1 a3 1if n 1 print 輸入有誤 return 1 while n 2 0 a3 a1 a2 a1 a2 a2 a3 a 1return a3 result fab 20 if result 1 print 總共有 d對小兔子誕生 resu...