一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
找规律!斐波那契数列
递归可以使用的两种方法如下:
for循环:
class Solution {
public:
int jumpFloor(int number)
{
if(number==1)
return 1;
if(number==2)
return 2;
int first=1;
int second=2;
int third;
for(int i=3;i<=number;i++)
{
third=first+second;
first=second;
second=third;
}
return third;
}
};
递归方法:
class Solution {
public:
int jumpFloor(int number)
{
if(number==1)
return 1;
if(number==2)
return 2;
else
return jumpFloor(number-1)+jumpFloor(number-2);
}
};
递归方法两个要素:边界条件,递归公式。jumpFloor(number)= jumpFloor(number-1)+jumpFloor(number-2)的公式要写成:return jumpFloor(number-1)+jumpFloor(number-2);代码中不能出现f(n)
递归增大了空间复杂度,减小了时间复杂度。
使用递归容易超空间,有限制条件n<=39等条件时,可以使用。无限制条件有时可能会超出空间。