题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路
动态规划的思想。
首先考虑最简单的情况,若只有1级台阶,显然只有1种跳法。若有两级台阶,则有两种跳法:一种是分两次跳,每次跳1级,另一种是一次性跳2级。
接着考虑一般情况,当n>2时,第一次起跳有两种选择,一是跳一级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目,即为f(n-1);另一种选择是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目,即为f(n-2).因此n级台阶的不同跳法的总数f(n)=f(n-1)+f(n-2).
不难看出,这实际上是斐波那契数列,可用递归,也可用循环求解。
递归解法如下:
public class Solution {
public int JumpFloor(int target) {
if(target<=0) return 0;
else if(target==1) return 1;
else if(target ==2) return 2;
else{
return JumpFloor(target-2)+JumpFloor(target-1);
}
}
}