《劍指offer》面試題10:斐波那契數列
阿新 • • 發佈:2018-12-02
題目一:求斐波那契數列的第n項
寫一個函式,輸入n,求斐波那契(Fibonacci)數列的第n項。斐波那契數列的定義如下:
當n=0時,f(n)=0;
當n=1時,f(n)=1;
當n>1時,f(n)=f(n-1)+f(n-2);
從下往上計算,首先根據 f(0)和 f(1)算出 f(2),再根據 f(1)和 f(2)算出 f(3)……以此類推就可以算出第n項了。這種方法把遞迴的演算法用迴圈實現,極大的提高了時間效率。時間複雜度為 O(n)。
非遞迴的方法,從下往上計算,程式碼實現如下:
long long Fibonacci(unsigned int n) { int result[2]={0,1}; if(n<2) return result[n]; long long fibNMinusOne=1; long long fibNminusTwo=0; long logn fibN=0; for(unsigned int i=2;i<=n;++i) { fibN=fibNMinusOne+fibNminusTwo; fibNminusTwo=fibNMinusOne; fibNMinusOne=fibN; } return fibN; }
測試用例:
a.功能測試(如輸入3、5、10等)。
b.邊界值測試(如輸入0、1、2)。
c.效能測試(輸入較大的數字,如40、50、100等)。
類似題:青蛙跳臺階問題
一隻青蛙一次可以跳上1級臺階,也可以跳上2級臺階。求該青蛙跳上一個n級的臺階總共有多少種跳法。