一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
java版本:
public class Solution { public static void main(String[] args){ long startTime=System.currentTimeMillis(); System.out.println("第30项的结果是:"+JumpFloor(30)); long endTime=System.currentTimeMillis(); System.out.println("程序执行的时间:"+(endTime-startTime)+"ms"); } public static int JumpFloor(int target){ int a=2,b=1,c=0; if(target==1||target==2){ return target; }else{ for(int i=3;i<=target;i++){ c=a+b; b=a; a=c; } return c; } } /*public static int JumpFloor(int number){ if(number<=0) { return 0; }else if(number>0&&number<4){ return number; }else{ return JumpFloor(number-1)+JumpFloor(number-2); } } */ }
js版本:
function jumpFloor(number) { if(number<=0) { return 0; }else if(number>0&&number<4){ return number; }else{ return jumpFloor(number-1)+jumpFloor(number-2); } // write code here }
总结:和昨天的斐波那契数列思路一致,递归的非常消耗时间。建议用存取中间项的形式做。