题目

  1. 兔子问题
  2. 有一对大兔子 每个月繁衍 一对小兔子(一公一母)
  3. 小兔子需要1个月生长为大兔子
  4. 现有一对小兔子 一年后 有多少对?

代码

递归:

  public static int fib(int N) {
        if (N == 1) return 1;
        if (N == 2) return 1;
        System.out.println("求第" + N + "个月的兔子数量");
        System.out.println("转化为求第" + (N - 1) + "个月和第" + (N - 2) + "个月的兔子数量");

        return fib(N - 1) + fib(N - 2);
    }

迭代:

  public static int fib1(int N) {
        // 6 —— 0 1 2 3 4 5
        // fib(0) = 0  有时需要处理
        if (N <= 1) return 1;
        int[] arr = new int[N];
        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 - 1];
    }