背景
在函式遞迴問題中乙個典型問題是求解斐波那契數列
但是函式遞迴會面臨著資源的大量消耗問題
按照一種最為基本的寫法
#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...