兔子繁殖问题编程


问题如下:

有人养了一对兔子,这对兔子以后每月生一对兔子,新生兔子从第三个月开始,也是每月生一对兔子,问 12 个月后这人有多少对新生兔子?

首先分析:

image.png

从上可以知道,从3月份开始每月增加的兔子对数成等差数列,因此此题从3月份开始可以通过求等差数列的前n项和求每月的兔子对数。

image.png

因为是从三月开始所以n= n- 2; 首项为1,化简后得:

result = 2 + (n - 2) + (n * n - 5n + 6) / 2; 其中n要大于等于2;

1月则返回1对兔子

C语言编程如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
 有人养了一对兔子,这对兔子以后每月生一对兔子,新生兔子从第三个月开始,也是每月生一对兔子,问 12 个月后这人有多少对新生兔子
 */
#include <stdio.h>

int main() {
    int n = 0;
    int result = 0;
    printf("请输入月份:");
    scanf("%d", &n);
    if (n == 1) {
        result = 1;
    } else {
        result = 2 + (n - 2) + (n * n - 5 * n + 6) / 2;
    }
    printf("%d月份共有%d对兔子\n", n, result);
    return 0;
}