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

要解决这个问题,可以使用递归或迭代的方法来计算每个月的兔子总数。这里我们使用迭代的方法来实现。假设 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个月和第2个月的兔子数量都为1。
  3. 输出前两个月的兔子数量:直接输出第1个月和第2个月的兔子数量。
  4. 计算并输出从第3个月开始的兔子数量:使用一个 for 循环从第3个月开始计算每个月的兔子数量,并输出结果。每个月的兔子数量等于前两个月的兔子数量之和。
  5. 更新前两个月的兔子数量:在每次循环中,更新 prev1 和 prev2 的值,以便计算下一个月的兔子数量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值