题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
天哪,跳台阶都不会写....依稀记得本科离散好像讲过这个题,理解了跳台阶的原理就很好写了,如果直接说让我写一个斐波那契数列,那我肯定还是可能写的...
跳台阶的话首先知道n=1时,k=1,n=2时,k=2,n=3时则从后往前思考,如果从上一步调到3的话,可能的情况有两种,即上一步跳了一级和上一步跳了两级,跳了一级的话则上一步在n=2,有两种跳法,跳了两级则n=1,有1中跳法,所以加起来有3种跳法。
所以当n的时候,跳到n的方法就可以推到跳到n-1和n-2的方法的和,即斐波那契数列。
完整代码如下:
public int JumpFloor(int target) {
if(target==1) {
return 1;
}
if(target==2) {
return 2;
}
return JumpFloor(target-1)+JumpFloor(target-2);
}