类比斐波那契数列,只不过注意考虑一下初始条件。
package 剑指Offer.青蛙跳台阶问题; /** * @program:多线程和IO * @descripton:青蛙跳台阶,一次一阶或者两阶,问有几种跳法。(类比斐波那契) * @author:ZhengCheng * @create:2021/9/28-15:11 **/ public class FrogClimbStairs { //递归,注意初始条件 太慢! private static int frogJumpStairs01(int n){ if (n == 0 || n== 1) { return 1; } return frogJumpStairs01(n-1) + frogJumpStairs01(n-2); } //利用数组记录值 占用了空间 private static int frogJumpStairs02(int n ){ int[] arr = new int[n+1]; arr[0] = 1; arr[1] = 1; for (int i = 2; i < arr.length; i++) { arr[i] = arr[i-1] + arr[i-2]; } return arr[n]; } private static int frogJumpStairs03(int n ){ int tempa = 1; int tempb = 1; int tempc = 0; for (int i = 1; i < n; i++) { tempc = tempa + tempb; tempa = tempb; tempb = tempc; } return tempb; } /* public static void main(String[] args) { int i = frogJumpStairs01(1); int j = frogJumpStairs02(1); int k = frogJumpStairs03(1); System.out.println("跳的方法有"+i+"跳的方法有"+j+"跳的方法有"+k); }*/ }