题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
方法一:递归
当只有一阶台阶的时候,只有一种跳法,有两阶台阶的时候,有两种跳法。有n阶台阶的时候,可以分解为先跳n-1阶台阶,再跳1阶台阶和先跳n-2阶台阶,再一次跳2阶台阶。
class Solution {
public:
int jumpFloor(int number)
{
if(number<=0) return 0;
if(number==1) return 1;
if(number==2) return 2;
else return jumpFloor(number-1)+jumpFloor(number-2);
}
};
方法二:循环
找规律,f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5, 可以总结出f(n) = f(n-1) + f(n-2)的规律;根据递归的过程,也可以总结出这个规律
class Solution {
public:
int jumpFloor(int number)
{
if(number<=0) return 0;
if(number==1) return 1;
if(number==2) return 2;
int a=1,b=2,result;
for(int i=3;i<=number;i++)
{
result=a+b;
a=b;
b=result;
}
return result;
}
};