c语言趣味题求解 刚学数组

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?要求输入1个年份并输出对应母牛数量。

示例1

输入:4

输出:4

示例2

输入:5

输出:6

这是一道需要借助递推解决的题
递推公式:f(1)=f(2)=f(3)=1,f(n)=f(n-1)+f(n-3)(n>=4)
实现代码可供题主参考:

#include<stdio.h>

int main()
{
    int f[50],i,n;
    scanf("%d",&n);
    f[1]=1;f[2]=2;f[3]=3;
    for(i=4; i<=n;i++){
        f[i]=f[i-3]+f[i-1];
    }
    printf("%d\n",f[n]);
    return 0;
}


运行结果:

img


希望对题主有所帮助!望采纳!!

题目出得不严谨,计算母牛数目是按年初之前算,还是按过了年初算?给出的示例也是相互矛盾。

#include <stdio.h>

int main()
{
    int n;
    int a[5] = {};
    scanf("%d", &n);
    a[4] = 1;
    for (int i = 0; i < n; i++)  // 如果按过了年初来计算,i=0
    {                            // 如果按没过年初来计算,i=1
        int b = a[4];
        a[4] += a[3];
        a[3] = a[2];
        a[2] = a[1];
        a[1] = a[0];
        a[0] = b;
    }
    printf("%d", a[0] + a[1] + a[2] + a[3] + a[4]);
    return 0;
}