題目描述
大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0,第1項是1)。
n≤39
時間限制:c/c++ 3秒,其他語言6秒 空間限制:c/c++ 64m,其他語言128m
題目示例
輸入:
4
返回值:
3解法分析在學遞迴的時候,斐波那契數列可謂最佳例子,除去n=0&n=1的情況return fibonacci(n-1)+fibonacci(n-2)就完事了,但是遞迴雖簡單但有缺點,就是速度感人,時間複雜度為o(2^n),同時n過大時容易溢位,因此我們可以找一找更優解。
如果我們利用陣列和for迴圈,可以大大減少遞迴方法中的重複計算,時間複雜度降至o(n)。
或者單純利用迴圈,時間複雜度同樣為o(n)。
**
陣列+迴圈:
1迴圈:function
fibonacci(n)
2else
13return
fib[n];14}
15 }
1執行結果function
fibonacci(n)29
return
res;
10 }
題目描述
大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0,第1項是1)。
n≤39
時間限制:c/c++ 3秒,其他語言6秒 空間限制:c/c++ 64m,其他語言128m
題目示例
輸入:
4
返回值:
3解法分析在學遞迴的時候,斐波那契數列可謂最佳例子,除去n=0&n=1的情況return fibonacci(n-1)+fibonacci(n-2)就完事了,但是遞迴雖簡單但有缺點,就是速度感人,時間複雜度為o(2^n),同時n過大時容易溢位,因此我們可以找一找更優解。
如果我們利用陣列和for迴圈,可以大大減少遞迴方法中的重複計算,時間複雜度降至o(n)。
或者單純利用迴圈,時間複雜度同樣為o(n)。
**
陣列+迴圈:
1迴圈:function
fibonacci(n)
2else
13return
fib[n];14}
15 }
1執行結果function
fibonacci(n)29
return
res;
10 }
劍指offer07 斐波那契數列
大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0,第1項是1 n 39 輸入 4 返回值 3 陣列 這裡用遞迴會報錯 您的程式未能在規定時間內執行結束,請檢查是否迴圈有錯或演算法複雜度過大 改用陣列可以巧妙解決 報超時 程式未能在規定時間內執行結束 ...
劍指07 斐波那契數列
大家都知道斐波那契 fibonacci 數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0,第1項是1 要求使用遞迴和非遞迴兩種方法 public class solution 上述 效率低,這樣是拿不到offer的 o 上述遞迴 之所以慢,是因為會大量重複計算相同的數...
劍指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 ...