问题:一只青蛙一次可以跳上1个台阶,也可以跳上2个台阶。求青蛙跳上n级台阶总共有多少种跳法?
分析:这个问题从前往后分析太过复杂,不妨换个思路,如果青蛙想跳上第n个台阶,就只有两种跳法:从第n-1个台阶跳上来或者从第n-2个台阶跳上来。这样我们就可以先算第n个台阶的跳法然后用递归往下推算。第n个台阶:f(n)=f(n-1)+f(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;
return jumpFloor(number - 1) +jumpFloor(number - 2);
}
};