C++编写程序在第n年春季的时候,母牛M共有多少头后代母牛

题目描述

现有一养殖场培育母牛。假设一头母牛名叫M,每年春季生一头小母牛,小母牛经历两年的成长可以成熟,从成熟的这一年开始,每年春季生一头小母牛,那么在第n年春季的时候,母牛M共有多少头后代母牛呢?(注意:第一年母牛M,不产小牛,从第二年开始产小牛。)

输入描述

一个整数n,表示年数。(1<=n<=20)

输出描述

一个整数,表示统计结果。

源代码

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    int prev = 0, curr = 1, next;
    for (int i = 1; i <= n; i++) {
        next = curr + prev;
        prev = curr;
        curr = next;
    }

    cout << prev << endl;

    return 0;
}

这里使用了斐波那契数列的思想。假设在第n年春季时母牛M共有f(n)头后代母牛,那么f(n)等于前一年的后代母牛f(n-1)和当年新生产的小母牛之和。而当年新生产的小母牛数量恰好等于前一年成熟的母牛数量,即f(n-2)。因此,我们可以使用类似斐波那契数列的递推公式来计算f(n)。

具体地,我们用三个变量prev、curr和next分别表示f(n-2)、f(n-1)和f(n),并依次更新这三个变量。最终输出prev即可得到答案。

© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏 分享