0
点赞
收藏
分享

微信扫一扫

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

清冷的蓝天天 2022-05-03 阅读 61
java
  • 思路一:将兔子分为 还有两个月可以生产、还有一个月可以生产、可以生产 三种类型。

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

相关推荐

0 条评论