//非递归版 private static int JumpFloor(int n) { int[] arr = new int[n]; //0阶0种跳法 arr[0] = 0; //1阶1种跳法 arr[1] = 1; //2阶2种跳法 arr[2] = 2; int i; for (i = 3; i < arr.length; i++) { //根据斐波拉契数列,后一位的跳法等于前两位的和 arr[i] = arr[i - 1] + arr[i - 2]; } return arr[i - 1] + arr[i - 2]; }
public int fun(int n){ if (n==1){ return 1; } if (n==2){ return 2; } return fun(n-2)+fun(n-1); }2.这是动态规划的入门题目
public int fun2(int n){ if (n==1){ return 1;} if (n==2){ return 2;} int [] res=new int[n+1]; res[1]=1; res[2]=2; for (int i = 3; i < res.length; i++) { res[i]=res[i-2]+res[i-1]; } return res[n]; }