import java.util.HashMap;
//一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
public class Solution {
//方法一:递归求解
public static int JumpFloor1(int n) {
if(n<1){
return 0;
}
if(n==1){
return 1;
}
if(n==2){
return 2;
}
return JumpFloor1(n-1)+JumpFloor1(n-2);
}
//方法二:备忘录算法
public static int JumpFloor2(int n,HashMap<Integer,Integer> map) {
if(n<1){
return 0;
}
if(n==1){
return 1;
}
if(n==2){
return 2;
}
if(map.containsKey(n)){
return map.get(n);
}else{
int value=JumpFloor2(n-1, map)+JumpFloor2(n-2, map);
map.put(n, value);
return value;
}
}
//方法三:动态规划求解
public static void main(String[] args){
HashMap map=new HashMap();
System.out.println(Solution.JumpFloor1(40));
System.out.println(Solution.JumpFloor2(40,map));
}
}