要解决这个问题,可以使用递归或迭代的方法来计算每个月的兔子总数。这里我们使用迭代的方法来实现。假设 F(n)
表示第 n
个月的兔子总数,根据题目描述,可以得出以下规律:
- 第1个月:1对兔子
- 第2个月:1对兔子
- 第3个月:2对兔子(原来的1对兔子和新出生的1对)
- 第4个月:3对兔子(原来的2对兔子和新出生的1对)
- 第5个月:5对兔子(原来的3对兔子和新出生的2对)
从第3个月开始,每个月的兔子总数等于前两个月的兔子总数之和,即 F(n) = F(n-1) + F(n-2)
。
以下是一个用 C++ 实现的示例代码:
#include <iostream>
int main() {
int months; // 用户输入的月份数
std::cout << "请输入月份数: ";
std::cin >> months;
if (months <= 0) {
std::cout << "月份必须大于0" << std::endl;
return 1;
}
// 初始化前两个月的兔子数量
int prev1 = 1; // 第1个月的兔子数量
int prev2 = 1; // 第2个月的兔子数量
// 输出前两个月的兔子数量
std::cout << "第1个月: " << prev1 << " 对兔子" << std::endl;
if (months > 1) {
std::cout << "第2个月: " << prev2 << " 对兔子" << std::endl;
}
// 计算并输出从第3个月开始的兔子数量
for (int i = 3; i <= months; ++i) {
int current = prev1 + prev2; // 当前月的兔子数量
std::cout << "第" << i << "个月: " << current << " 对兔子" << std::endl;
// 更新前两个月的兔子数量
prev2 = prev1;
prev1 = current;
}
return 0;
}
代码解释:
- 输入月份数:用户输入要计算的月份数。
- 初始化前两个月的兔子数量:第1个月和第2个月的兔子数量都为1。
- 输出前两个月的兔子数量:直接输出第1个月和第2个月的兔子数量。
- 计算并输出从第3个月开始的兔子数量:使用一个
for
循环从第3个月开始计算每个月的兔子数量,并输出结果。每个月的兔子数量等于前两个月的兔子数量之和。 - 更新前两个月的兔子数量:在每次循环中,更新
prev1
和prev2
的值,以便计算下一个月的兔子数量。