题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路
用f(n)表示青蛙跳上一个n级(n>=1)的台阶总共的跳法数。对于n级台阶,青蛙的第一步可以跳1级,此时剩余n-1级共f(n-1)种跳法;第一步也可以跳2级,此时剩余n-2级共f(n-2)种跳法,...,所以(f(n) = f(n-1) + f(n-2) + ... + f(1))。因为(f(n-1) = f(n-2) + f(n-3) + ... + f(1)),所以(f(n) = f(n-1) + f(n-2) + ... + f(1) = 2f(n-1) = 2^2f(n-2) = ... = 2^{n-1}f(1) = 2^{n-1}),所以(f(n)=2^{n-1}). 代码如下:
class Solution {
public:
int jumpFloorII(int number) {
if(number==0)
return 0;
int ans = 1;
while(number>1){
ans *= 2;
number--;
}
return ans;
}
};