题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路一:经过计算F(n)=2*F(n-1),F(1)=1,使用递归的结果是占用内存太大
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路一:经过计算F(n)=2*F(n-1),F(1)=1,使用递归的结果是占用内存太大
class Solution {
public:
int jumpFloorII(int number) {
if(number==1)
return 1;
else if(number>1)
{
return 2*jumpFloorII(number--);
}
return 0;
}
};//思路二:使用循环class Solution {
public:
int jumpFloorII(int number) {
if(number==0)
return number;
int total=1;
for(int i=1;i<number;i++)
total*=2;
return total;
}
};//变态解法:2^(number-1),移位操作,左移一位就相当于乘以2,将1左移number-1位class Solution {
public:
int jumpFloorII(int number) {
return 1<<--number;
}
};

本文探讨了一只青蛙跳上n级台阶的不同跳法数量问题,提供了三种解决方案:递归法、循环法及位运算法,并详细阐述了每种方法的实现逻辑与优缺点。
454

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



