10 斐波那契數列

2021-10-05 01:37:58 字數 1079 閱讀 7782

寫乙個函式,輸入 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

1、遞迴:return (fib(n-1)+fib(n-2))%(1000000007) 以fib(0)和fib(1)為終止條件,但是時間複雜度太高;

2、動態規劃:核心思想是把原問題分解成子問題進行求解,其實就是分治的思想。f(n) = f(n - 1) + f(n - 2)為轉移方程。

3、注意:在計算過程中就達到取模要求,不取模會溢位,不要等到結果輸出時才取模。前兩次提交時,沒有在過程中取模,提交一直不通過,一定要多思考!

class

solution

// return (fib(n-1)+fib(n-2))%(1000000007);

int sum=

0,a=

0,b=1;

for(

int i=

2;i<=n;i++

)return sum;

}}

乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法。

答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。

此題的切入點是倒序,青蛙跳的最後一步可能是跳1階或2階。如果最後一步是跳了一階,那麼前(n-1)階有f(n-1)種跳法;如果最後跳的2階,那麼前(n-2)階有f(n-2)種跳法。其實這就是斐波那契問題。不同的是,f(0)取值不同

青蛙跳台階:f(0)=1 , f(1)=1,f(2)=2 ;

斐波那契數列問題: f(0)=0,f(1)=1,f(2)=1

斐波那契數列10

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 斐波那契數列屬於經典的遞迴問題,對於這題的求解,我們首先要知道斐波那契數列的狀態轉移式,即f n f n 1 f n 2 且在n 1或2時,f n 1。public static int feibol...

10 斐波那契數列

效率對比 遞迴與非遞迴。差距很大。include using namespace std long long fibonacci unsigned int n if n 1 return fibonacci n 1 fibonacci n 2 long long fibonacci2 unsigne...

題10 斐波那契數列

要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 首先用簡單的遞迴實現 public class fibonacci if n 1 return fibrecusion n 1 f n 2 再用迴圈實現 public class fibonacci if n 1 int res...