一、题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题思路:
按上述规则观察青蛙调台阶的跳法,可分析如下:
当n = 1, 只有1中跳法;
当n = 2时,有2种跳法;
当n = 3 时,有3种跳法;
当n = 4时,有5种跳法;
当n = 5时,有8种跳法;观察发现,上述构成菲波那切数列,即有如下特点:
1 if(n=1)
Fibo(n)= 2 if(n=2)
Fibo(n-1)+Fibo(n-2) if(n>2)
二、实现代码
class Solution {
public:
int jumpFloor(int number) {
if(number==1)
return 1;
if(number==2)
return 2;
int a=1,b=2;
//当n>2时,一直循环加,直到达到所求的菲波那切数列中的那一项
while(number>2)
{
b=b+a;
a=b-a;
number--;
}
return b;
}
};