一般的我們把F(n)=F(n-1)+F(n-2),(n>2)這樣的數列稱之爲斐波拉契數列,現在假設F(1)=1,F(2)=2,自己編寫代碼求解,很多人直接想到的就是遞歸的方法,大家不妨在思索一下,假設我們求解的n=5,是不是就要F(5)=F(4)+F(3),F(4)=F()3+F(2),F(3)=F(2)+F(1);這樣一來我們是不是對F(3)重複求解了2次,F(4) 1次,要是n的數字很大,我們是不是就會對很多的數字重複求解多次,有一個辦法就是把已經求解的數字記錄下來,請看下面代碼:
long Filibiate(int n)
{
int a[]={1,2};
if(n<=2)
{
return a[n-1];
}
long one=1;
long two=2;
long fb=0
for(int i=2;i<n;i++)
{
fb=one+two;
one=two;
two=fb;
}
return fb;
}
以上代碼很好的解決了重複計算的問題,時間複雜度o(n);