寫乙個函式,輸入 n ,求斐波那契(fibonacci)數列的第 n 項。斐波那契數列的定義如下:
f(0) = 0, f(1) = 1
f(n) = f(n - 1) + f(n - 2), 其中 n > 1.
斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。
答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。
示例 1:
輸入:n = 2
輸出:1
示例 2:
輸入:n = 5
輸出:5
可以寫成遞迴f(n) = f(n-1) + f(n-2)
但是中間存在大量的重複計算。比如說f(3)=2,再計算f(4),f(5)…f(n)的時候一直會重複計算f(3)。因此從下往上計算,每個斐波那契數只要計算一次
public
intfib
(int n)
return sum;
}
乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法。
答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。
示例 1:
輸入:n = 2
輸出:2
示例 2:
輸入:n = 7
輸出:21
到第n個台階f(n),有兩種跳法,從n-1跳上去,或者從n-2跳上去。f(n) = f(n-1) + f(n-2)這就是斐波那契數列。但初始條件有所變化。
**實現:
public
intnumways
(int n)
return sum;
}
劍指offer 10 斐波那契數列
遞迴解法 long fibonacci int n 在劍指offer中提到,面試時如果僅僅是做出遞迴的解法,估計是通過不了面試的。我們分析遞迴的過程,以求f 10 為例,需先求f 9 和f 8 要求f 9 需先求f 8 和f 7 我們可以發現在求解的過程中有很多節點是重複計算的,而且計算量是指數遞增...
劍指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 如計算初...