问题描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
示例 1:
输入:n = 2
输出:2
示例 2:
输入:n = 7
输出:21
提示:
0 <= n <= 100
题解:
我们可以计算前面几个数字发现规律,n = 1时结果为1,n = 2时结果为2, n = 3时结果为3,n = 4时结果为5,n = 5时结果为8,其实我们算到n = 4时就可以大胆假设,想要的结果是此时的n前面的n-1和n-2相加得到,然后我们就可以验证n = 5时是不是我们想的结果,所以这道题就是斐波那契数列的应用题,我们很自然的想到用递归算法和暴力法,但是做这道题时递归算法效率很低,因为我们要重复计算很多重复的节点,最终导致超出时间限制。
代码
递归的方法
class Solution {
public:
int numWays(int n)
{
int ret = 0;
if(n == 0)
ret = 1;
else if (n == 1)
ret

最低0.47元/天 解锁文章
1476

被折叠的 条评论
为什么被折叠?



