题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
public class Solution {
public int JumpFloor(int target) {
//思路,因为一次只能跳一步或者2步,所以f(n) = f(n-1)+f(n-2),因为当你在n-1阶的时候,我们可以一步跳到n阶,有多少种跳到n-1,就有多少种方法从n-1一步跳到n阶级,n-2同理。
/*方法一:递归
运行时间600多ms
if(target <= 0){
return 0;
}
if(target == 1){
return 1;
}
if(target == 2){
return 2;
}
return JumpFloor(target-1)+JumpFloor(target-2);
*/
//方法二:递归的时间比较长,我们用遍历,运行时间30ms,可以看出递归很耗时。
if(target <= 0){
return 0;
}
if(target == 1){
return 1;
}
if(target == 2){
return 2;
}
int one =1;
int two =2;
int result=0;
for(int i=2;i<target;i++){
result = one + two;//前两层的跳法累加
one = two;
two =result;
}
return result;
}
}