有一对兔子,从出生后第3个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
//这是一个菲波拉契数列问题
public static void main(String[] args) {
    /*  第一种做法
        System.out.println("第1个月的兔子数量为:1对");
        System.out.println("第2个月的兔子数量为:1对");
        int rabbit1 = 1, rabbit2 = 1;
        int temprabbit;       //临时存放
        int mouth = 24;  //截止到第24个月
        for (int i = 3; i <= mouth; i++) {
            temprabbit = rabbit2;
            rabbit2 = rabbit1 + rabbit2;
            rabbit1 = temprabbit;
            System.out.println("第" + i + "个月的兔子数量为:" + rabbit2 + "对。");
     }    */
        //第二种解法:利用数组来计算,首先用数组存放兔子数量,然后用前两个数组之和等于第三个数组。
        int arr[] = new int[25];
        arr[0] = 1;  //第一个月兔子的数量
        arr[1] = 1;  //第二个月兔子的数量
        //对数组进行遍历
        for (int i = 2; i < arr.length; i++) {
            //斐波那契数列规律前两个数之和等于第三个数,当前月是前两个月兔子之和
            arr[i] = arr[i - 2] + arr[i - 1];
            System.out.println("第" + (i + 1) + "个月出生的小兔子数量为:" + arr[i]*2);
        }
    }
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注