题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)
思路:
对于第n个台阶来说,只能从n-1或者n-2的台阶跳上来,所以F(n) = F(n-1) + F(n-2)。于是就回归到斐波拉契数列的问题了。
class Solution {
public:
int jumpFloor(int number) {
int res=0;
int pre=1;
int next=2;
if(number==1)
return 1;
else if(number==2)
return 2;
for(int i=3;i<=number;i++){
res=pre+next;
pre=next;
next=res;
}
return res;
}
};
于是就类似于剑指offer上的斐波那契数列问题,两个题目代码类似:
题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
class Solution {
public:
int Fibonacci(int n) {
int res=0;
int pre=0;
int next=1;
if(n==0)
return 0;
if(n==1)
return 1;
for(int i=2;i<=n;i++)
{
res=pre+next;
pre=next;
next=res;
}
return res;
}
};