一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法
思路:也是用到递归, f(1)=1,f(2)=2,f(3)=4,当n等于3的时候,第一次可以跳一阶,剩下两阶有f(2)种跳法,第一次也可以跳两阶,剩下一阶,有f(1)种跳法,第一次也可以跳三阶,一次就跳完,由此可知,当n阶的时候,一共有f(n-1)+f(n-2)+f(n-3)+.......+f(1)+1种跳法,加1 是代表一次跳n阶,因此用for循环和递归调用来求解。
class Solution {
public:
int jumpFloorII(int number) {
if(number <= 0)
return -1;
else if(number == 1)
return 1;
else if(number == 2)
return 2;
int i;
int j;
int sum = 1;
for(i = 1;i < number;i++)
{
sum += jumpFloorII(number - i);
}
return sum;
}
};