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)); } }