题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
分析
这个要思考下,当台阶数是1时,只有一种跳法;
当台阶数是2时,有两种跳法;
当台阶数是3时,第一次跳,要么是跳一级,要么是跳两级,这两种状态,是两种完全不同的结果。
跳一级,那么剩下的就是n-1级台阶的跳法;
跳两级,那么剩下的就是n-2级台阶的跳法;
第一步怎么跳,决定了总的路子跳法,所以总的跳法是f(n-1)+f(n-2)的跳法。
这就是斐波拉契数列了。
class Solution {
public:
int jumpFloor(int number) {
if(number==1)
return 1;
if(number==2)
return 2;
else
return jumpFloor(number-2)+jumpFloor(number-1);
}
};