青蛙跳台阶
关键词:递归、斐波那契数列
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例 1:
示例2:
思路
思路一:
因为每次只能跳1or2,所以n阶的方式F(n) = F(n-1) + F(n-2),本质上就是个斐波那契数列。
思路二:
可以采用数组的方式来进行计算(可能省时间?)
代码
思路一:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 
 | class Solution {public:
 int numWays(int n) {
 if(n <= 1) return 1;
 if(n == 2) return 2;
 int j = 1;
 int k = 2;
 for(int i = 0; i < n - 2; i++){
 int temp = k;
 k += j;
 j = temp;
 if(k > 1000000007) k = k % 1000000007;
 }
 return k;
 }
 };
 
 | 
思路二:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | class Solution {public:
 int numWays(int n) {
 if(n <= 1) return 1;
 int dp[n+1];
 dp[0] = 1;
 dp[1] = 1;
 
 
 for(int i = 2; i < n+1; i++){
 dp[i] = (dp[i-1] + dp[i-2])%1000000007;
 }
 return dp[n];
 }
 };
 
 | 
知识点
- 递归
- 斐波那契数列
- 数组与递归