-
思路一:将兔子分为 还有两个月可以生产、还有一个月可以生产、可以生产 三种类型。
public static void main(String[] args) { System.out.println(calculate(9)); } public static int calculate(int num) { int[] ints = {1, 0, 0}; int[] ints1 = calculateRabbit(ints, num); return ints1[0] + ints1[1] + ints1[2]; } public static int[] calculateRabbit(int[] ints, int num) { int sum1 = ints[1] + ints[2]; ints[2] = ints[1] + ints[2]; ints[1] = ints[0]; ints[0] = sum1; num--; if (num == 1) { return ints; } return calculateRabbit(ints, num); }
- 思路二:兔子的规律为数列1,1,2,3,5,8,13,21…
- a(n) = a(n-1) + a(n-2)
public static void main(String[] args) { System.out.println(calculate1(9)); } public static int calculate1(int num) { if (num == 1) return 1; if (num == 2) return 1; return calculate1(num - 1) + calculate1(num - 2); }