题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析:
记f(n)为跳n级台阶的总跳法数,当n>1时,若第一次跳1级,则还剩n-1级台阶,有f(n-1)种跳法;若第一次跳2级,则还剩n-2级台阶,有f(n-2)种跳法......以此类推,若第一次跳n-1级,还剩1级台阶,有f(1)种跳法;若第一次跳n级,即为1种跳法。因此;
。又
,所以
。而根据
,所以
。可直接调用pow函数求解:
class Solution {
public:
int jumpFloorII(int number) {
return pow(2 , number-1);
}
};
也可以用左移操作:
class Solution {
public:
int jumpFloorII(int number) {
int a = 1;
return a << (number-1);
}
};