跳台阶问题实质是斐波那契数列
1、递归方式:
public class Solution {
public int JumpFloor(int target) {
if(target<=0)
return -1;
else if(target==1)
return 1;
else if(target==2)
return 2;
else
return JumpFloor(target-1)+JumpFloor(target-2);
}
}
递归方式效率较低,重复计算的太多,下图为牛客网编译通过的效率截图。
2、非递归方式,采用从下往上的计算方式。
public class Solution {
public int JumpFloor(int target) {
if(target==0||target==1)
return target;
int a=0,b=1,c=0;
while(target-->=1){
c=a+b;
a=b;
b=c;
}
return c;
}
}
效率如下图: