題目描述
寫乙個函式,輸入n,求斐波那契數列的第n項,斐波那契數列的定義如下: n=0,f(n)=0 ;n=1,f(n)=1 n>1;f(n)=f(n-1)+f(n-2).
解題思路
演算法**
從上圖中不難發現:在這棵樹中有很多結點是重複的,而且重複的結點數會隨著n的增大而急劇增加,這意味計算量會隨著n的增大而急劇增大。事實上,用遞迴方法計算的時間複雜度是以n的指數的方式遞增的。
/** * 寫乙個函式,輸入n,求斐波那契數列的第n項,斐波那契數列的定義如下: n=0,f(n)=0 ;n=1,f(n)=1 n>1;f(n)=f(n-1)+f(n-2).
*/public
class
offer10
public
static
intlowfibonacci
(int n)
if(n ==1)
return
lowfibonacci
(n -1)
+lowfibonacci
(n -2)
;}/** * 效率高 減少重複計算
** @param n
* @return
*/public
static
inthfibonacci
(int n)
if(n ==1)
int one =0;
int two =1;
int fib =0;
for(
int i =
2; i <= n; i++
)return fib;
}}附錄
該題原始碼在我的 ?github 上面!
劍指Offer09 斐波拉契數列數列問題
斐波拉契數列問題 要求實現鍵盤輸入乙個數n,輸出斐波拉契數列的第n項。斐波拉契數列定義 f 0 0 f 1 1 f n f n 1 f n 2 按照斐波拉契地推公式很容易想到的方法就是採用遞迴來求解,但是遞迴方法存在很嚴重的效率問題 例如要求f 10 需要先求f 9 和f 8 同樣要求f 9 必須先...
劍指offer 斐波那契數列
題目1描述 寫乙個函式,輸入n,求斐波那契數列的第n項。斐波那契數列的定義如下 f n 0 n 0 f n 1 n 1 f n f n 1 f n 2 n 1 分析描述 在大多數的c語言教科書中,一般會用遞迴求斐波那契數列。如下 long long fibonacci unsigned int n ...
劍指offer 斐波那契數列
記錄來自 劍指offer 的演算法題。題目如下 寫乙個函式,輸入n,實現斐波那契數列的第n項。斐波那契數列的定義如下 f n 01 f n 1 f n 2 n 0 n 1n 1 教科書上通常在介紹遞迴的時候都會使用斐波那契數列作為例子,然後給出下列解法 long long fibonacci uns...