有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请用c语言编程实现在第n年的时候,共有多少头母牛?
时间: 2024-10-27 14:15:34 浏览: 65
这个问题描述了一个经典的递归问题,可以利用动态规划的思想解决。我们可以创建一个数组`cows`来存储在每个年份的母牛总数。初始时,第一年的母牛只有那头新生的小母牛,即`cows[0] = 1`。然后,对于第二年到第n年,每一年都会新增`cows[i-3]`头母牛,因为那是之前出生并在这一年可以生育的小母牛。
下面是C语言的一个简单程序实现:
```c
#include <stdio.h>
int cowsInYear(int n) {
// 初始化数组
int cows[40]; // 假设n的最大值小于40
cows[0] = 1; // 第一年有1头母牛
// 计算从第二年到n年每年的母牛数
for (int i = 1; i <= n; i++) {
if (i >= 3) {
cows[i] = cows[i - 3] + 1; // 每隔三年增加1头母牛
} else {
cows[i] = 1; // 年龄不到四岁的母牛还是只有她自己
}
}
return cows[n];
}
int main() {
int n;
printf("请输入年份n: ");
scanf("%d", &n);
printf("在第%d年一共有 %d 头母牛。\n", n, cowsInYear(n));
return 0;
}
```
当你运行这个程序并输入具体的年份n时,它会告诉你在那一年有多少头母牛。
阅读全文