斐波那契數列系列問題

一般的我們把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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章