劍指offer 10 斐波那契數列

2021-09-10 08:59:20 字數 370 閱讀 5074

遞迴解法:

long fibonacci(int n)

在劍指offer中提到,面試時如果僅僅是做出遞迴的解法,估計是通過不了面試的。我們分析遞迴的過程,以求f(10)為例,需先求f(9)和f(8),要求f(9)需先求f(8)和f(7),我們可以發現在求解的過程中有很多節點是重複計算的,而且計算量是指數遞增的!

我們換一種思路,從下而上進行求解,就像高中時的數列那樣,根據通項公式乙個個求解f(n)。

long fibonacci(n)

return ret;

}

該方法根據斐波那契數列的通項公式進行求解,時間複雜度為o(n),大大提高了效率。

劍指Offer10 斐波那契數列

class solution return b 2.最優解 矩陣運算 快速冪 o logn 每次n右移一位,即每次迴圈除2,直至n為0,因此時間為log2 n,o 1 需要兩個矩陣大小 快速冪 a n xi 1 a logn x3 a 4 x2 a 2 x1 a 1 x0 a 0 其中x序列是指數n...

劍指offer 10 斐波那契數列

寫乙個函式,輸入 n 求斐波那契 fibonacci 數列的第 n 項。斐波那契數列的定義如下 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。答案需要取模 1e9 7 1000000007 如計算初...

劍指offer10動態規劃 斐波那契數列

題目 寫乙個函式,輸入 n 求斐波那契 fibonacci 數列的第 n 項。斐波那契數列的定義如下 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。答案需要取模 1e9 7 1000000007 如...