青蛙跳台阶
题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
分析:
一个台阶,即f(1):只有一种跳法(1)
两个台阶,即f(2):有两种跳法(1,1)、(2)
三个台阶,即f(3):有两种情况,最后一次跳一个台阶、最后一次跳两个台阶。
故,f(3) = 最后一次跳一个台阶的所有情况 + 最后一次跳两个台阶的所有情况。
最后一次跳一个台阶,则之前已经跳了两个台阶,所有情况:f(2)
最后一次跳两个台阶,则之前已经跳了一个台阶,所有情况:f(1)
故,f(3) = f(1) + f(2)
4个台阶,即f(4):也有两种情况,最后一次跳一个台阶、最后一次跳两个台阶。
故,f(4) = 最后一次跳一个台阶的所有情况 + 最后一次跳两个台阶的所有情况。
最后一次跳1个台阶,则之前已经跳了三个台阶,所有情况:f(3)
最后一次跳2个台阶,则之前已经跳了两个台阶,所有情况:f(2)
故,f(4) = f(2) + f(3)
public class Solution {
public int JumpFloor(int target) {
if(target==1)
return 1;
if(target == 2)
return 2;
return JumpFloor(target-2)+JumpFloor(target-1);
}
}
变态跳台阶
题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析: