一、题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路:
- 观察跳法的结果:
当n = 1, 只有1种跳法;
当n = 2时,有2种跳法;
当n = 3 时,有4种跳法;
当n = 4时,有8种跳法;
当n = 5时,有16种跳法;分析规律
针对上n个台阶,青蛙第一次跳1步,则剩下的可能为F(n-1)
第一次上2步,则剩下的可能为F(n-2)
……
第一次上n-1步,则剩下的可能为F(n-(n-1))=F(1)=1
第一次跳n步,则剩下的可能为F(n-n)=F(0);定义F(0)=1则总的情况数为:
F(n)=F(0)+F(1)+F(2)+……F(n-2)+F(n-1) ··········①
同理:当上n-1个台阶,则总的情况数为:
F(n-1)=F(0)+F(1)+F(2)+……F(n-2) ·················②
①-②可得:F(n)=2*F(n-1)
二、实现代码
class Solution {
public:
int jumpFloorII(int number) {
if(number==1)
return 1;
//相当于求公比为2的等比数列中的元素项
int res=1;
while(number>1){
res = 2*res;
number--;
}
return res;
}
};