题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
1.递归
public class Solution {
public int JumpFloor(int target) {
if(target ==1){
return 1;
}else if(target==2){
return 2;
}else{
int sum=JumpFloor(target-1)+JumpFloor(target-2);
return sum;
}
}
2.动态规划
public class Solution {
public int JumpFloor(int target) {
if(target ==1){
return 1;
}
if(target==2){
return 2;
}
int[] result =new int[target+1];
result[1]=1;
result[2]=2;
for(int i=3;i<=target;i++){
result[i]=result[i-1]+result[i-2];
}
return result[target];
}
}
3.基于for循环实现
public class Solution {
public int JumpFloor(int target) {
public long jumpStepByFor(int n){
int result[] = {0, 1, 2};
if(n < 3){
return result[n];
}
long jumpNum1 = 1;
long jumpNum2 = 2;
long jumpNumn = 0;
for (int i = 3; i <= n; ++i) {
jumpNumn = jumpNum1 + jumpNum2;
jumpNum1 = jumpNum2;
jumpNum2 = jumpNumn;
}
return jumpNumn;
}
}