题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路
使用斐波那契数列求解
n=1时,跳法只有1种,f(1);
n=2时,跳法有2种,f(2);
从n>2开始,就可以将n分为两种情况:
情况1,第一步跳1阶台阶,那么就剩n-1阶台阶,n-1阶台阶的台阶跳法为f(n-1);
情况2,第一步跳2阶台阶,那么就剩n-2阶台阶,n-2阶台阶的台阶跳法为f(n-2);
所以得出结论:f(n) = f(n-1) + f(n-2),此规律符合斐波那契数列。
class Solution { public: int jumpFloor(int number) { int one_floor = 1; int two_florr = 2; int total_ways = 0; if(number == 1) return 1; if(number == 2) return 2; if(number > 2) total_ways = jumpFloor(number - 1) + jumpFloor(number - 2); return total_ways; } };