目錄題目:求斐波那契數列。寫乙個函式,輸入n,求斐波那契數列的第n項。斐波那契數列的定義如下:
效率低的解法:
long long fibonacci(unsigned int n)
如下**流程圖,可以看出這裡面有著眾多的重複計算。而且重複節點的數會隨著n的增大而急劇增加。
上述**之所以慢,是因為重複的計算太多,只需減少重複計算就行。首先根據f(0)和f(1)算出f(2),再根據f(1)和f(2)算出f(3)。。。依次推算就可以第n項。這種思路的時間複雜度是o(n)。實現**如下:
long long fibonacci(unsigned n)
; if(n<2)
return result[n];
long long fibmminusone =1;
long long fibmminustwo =0;
long long fibn =0;
for(unsigned int i=2 ;i<=n ;i++)
return fibn;
}
題目2:青蛙跳台階問題。
乙隻青蛙一次可以跳上1級台階,也可以跳2級台階。求該青蛙跳上乙個n級的台階總共有多少中跳法。我們把n階台階時的跳法看成n的函式,計為f(n),則當n>2 時,有兩種一種是從f(n-1)跳乙個台階,一種是從f(n-2)跳2個台階。即為f(n)=f(n-1)+f(n-2)
面試題10 斐波那契數列
面試題10 斐波那契數列 題目一 求斐波那契數列數列的第n項 現在要求輸入乙個整數 n,請你輸出斐波那契數列的第n項 思路 遞迴的效率低,使用迴圈 authorjuaner publicclassfibonacci1 publiclongfibonacci intn if n 1 for inti ...
面試題10 斐波那契數列
面試題10 斐波那契數列 題目 寫乙個函式,輸入n,求斐波那契 fibonacci 數列的第n項。fibonacci數列,不用多說,相信大家都了解,f 0 0,f 1 1,f n f n 1 f n 2 n 2 看著斐波拉契數列,突然想到了一句話很貼切,道生一,一生二,二生三,三生萬物.斐波拉契最簡...
面試題10 斐波那契數列
f 0 0 f 1 1 f n f n 1 f n 2 n 2 遞迴求解 public static long fib int n 為什麼說遞迴不好呢?採用迴圈的方式 順序計算,先定義f0,f1的值,根據n去迴圈,這樣需要儲存前兩個數的值,效率提公升了很多 int res if n 2 return...