递归算法
int jumpFloor(int number) {
if (number<=1) return 1;
return jumpFloor(number-1)+jumpFloor(number-2);
}
递归算法优化
public static int getNum(int num,int[] arr){
if (num==1){
arr[1]=1;
return 1;
}else if (num==2){
arr[2]=2;
return 2;
}else {
if (arr[num-2]==0){
arr[num-2]=getNum(num-2,arr);
}
if (arr[num-1]==0){
arr[num-1]=getNum(num-1,arr);
}
return arr[num-1]+arr[num-2];
}
}
动态规划
int jumpFloor(int number) {
dp[0] = 1, dp[1] =1;
for (int i = 2 ; i <= number ; i ++) dp[i] = dp[i-1]+dp[i-2];
return dp[number];
}
动态规划算法优化
public int jumpFloor(int target) {
int a=1; int b=1;
for (int i = 2; i <=target; i++) {
b=a+b;
a=b-a;
}
return b;
}