C语言网——题目 1004: [递归]母牛的故事

这是一个关于计算经过n年后母牛总数的编程问题,使用递归函数或数组循环实现。给定初始年份和条件,每年年初母牛会增加,新生成的小母牛从第4年开始也有生育能力。程序通过f(n)=f(n-1)+f(n-3)的公式或数组存储历史数据来计算结果。
摘要由CSDN通过智能技术生成

题目

 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

 输入  2 4 5 0(以0结尾)

 输出 2 4 6

 思路:

         6 = 前一年剩下的4头牛+(第2年新产的母牛刚具有生育能力生下的1头+最早的母牛1头)

        解题公式:f(n) = f(n-1) + f(n-3)

#include <stdio.h>
int cow(int n);
int main(void)
{
    int n;
    while (1)
    {
        scanf("%d",&n);
        if (n == 0)
            break;
        else
            printf("%d\n",cow(n));
    }
    return 0;
}

int cow(int n)
{
    if (n < 4)
        return n;
    else
        return cow(n - 1) + cow(n - 3);
   
}
#include<stdio.h>
int main()
{
	int a[100];
	int j;
	int n;
	do {
		scanf("%d", &n);
		if (n == 0)
			break;
		a[1] = 1;
		a[2] = 2;
		a[3] = 3;
		for (j = 4; j <= n; j++)
		{
			a[j] = a[j - 1] + a[j - 3];
		}
		printf("%d\n", a[n]);
	}while (n != 0);
	return 0;
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值