很明顯可以根據斐波那契額數列的定義f(n) = f(n-1) + f(n-2),可以給定初始條件,利用遞迴來做。但是像這種情況,遞迴的話先不說記憶體的問題,每一次計算時,因為是從上向下計算的,所以會有大量的重複資料,並且這個重複資料的出現對f(n)並沒用幫助。這種情況一般採用從下向上開始計算,並且不是遞迴的形式,而是採用迴圈的方式外加輔助變數,從底部向上計算每乙個f(n),知道達到條件為止。
**如下:
class solution
return ans;}}
也可以採用動態規劃,矩陣的形勢來,**如下:
class solution
return dp[n];}}
我原本以為採用輔助變數的形式,比採用動態規劃陣列的形式要節省記憶體,沒想到提交的結果兩者記憶體消耗竟然差不多。
遞迴的形式也給出一下,當作對遞迴的練習:
class solution
}
路飛題解: 劍指 Offer 10 I 斐波那契數列
劍指 offer 10 i.斐波那契數列 寫乙個函式,輸入 n 求斐波那契 fibonacci 數列的第 n 項。斐波那契數列的定義如下 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。答案需要取模 ...
劍指 Offer 10 I 斐波那契數列
題目描述 寫乙個函式,輸入 n 求斐波那契 fibonacci 數列的第 n 項。斐波那契數列的定義如下 f 0 0,f 1 1,f n f n 1 f n 2 其中 n 1.斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。答案需要取模 1e9 7 1000000007...
劍指 Offer 10 I 斐波那契數列
題目鏈結 題目描述 1.寫乙個函式,輸入 n 求斐波那契 fibonacci 數列的第 n 項。斐波那契數列的定義如下 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。答案需要取模 1e9 7 100...