母牛生小牛

88递增的牛群:若有一头小母牛,从第四年开始每年生育一头母牛,按照此规律,第n年时有多少母牛?请设计求解此问题的C语言程序。

因为从第四年开始小母牛才会开始生产一个小牛,生产的小牛经过三年后在第四年又会重新生产新的小牛,所以我们可以从此为切入点。

本题第一种做法就是:将前几年的牛的个数写出来,从而观察出规律。即:

第一年:1

第二年:1

第三年:1

第四年:2

第五年:3

第六年:4

第七年:6

第八年:9

第九年:13

第十年:19

...................

第n年:第n-1年个数+第n-3年数

不难发现:第n年:第n-1年个数+第n-3年数。所以可以根据此公式来设计C语言程序。

第二种方法:

由题意可知,由于母牛在第四年时会产生新的小牛,所以前三年都是一头牛。从第四年开始,第一头母牛要开始生产新的小牛(虽然我也不知道一头母牛怎么生产),同时新的小牛要在第四年时开始生产,因为每年都有新的小牛出生,所以每年可以产生的小牛数量会发生变化。但是本题的出发点是刚出生的小牛从第四年开始,之后的每一年都会生产新的小牛,而唯一发生变化的是本年新增加的能恰好可以生产的小牛的个数,所以唯一的变量就是每年新增加的能恰好生产的小牛数量(简称这种小牛)

都是这种小牛的数量怎么算呢?(不要怪我啰嗦)题上已经明确了刚出生的小牛从第四年开始每年生育一头母牛,所以这种小牛的数量就为三年前刚出生的小牛个数,而本年的小牛个数即为三年前刚出生的小牛个数+前一年的牛的个数。大家可以把前一年牛的个数理解为原来的牛的个数,把前三年前刚出生的小牛理解为本年新增的牛的个数。思路开朗了起来~~~

总上,我们可以设计四个变量来表示我们的思路;

oxnum表示本年牛的个数

oxnum1表示向前数第一年牛的个数

oxnum2表示向前数第二牛的个数

oxnum3表示向前数第三牛的个数

因此我们可以得到一下等式:

oxnum1=oxnum                /*今年的牛数成为明年向前数第一年的牛数*/

oxnum2=oxnum1              /*今年向前数第一年的牛数成为明年向前数第二年的牛数*/

oxnum3=oxnum2              /*今年向前数第二年的牛数成为明年向前数第三年的牛数*/

这样,我们便有了迭代递推关系

参考代码如下:

#include<stdio.h>
int main(void){
    int i,year,oxnum,oxnum1,oxnum2,oxnum3;
    
    printf("请输入年数:");
    scanf("%d",&year);
    
    for(int i=1;i<=year;i++){
        
        if(i<4){
            oxnum = oxnum1 = oxnum2 = oxnum3 = 1;
        }
        else{
            oxnum = oxnum1 + oxnum3;
            oxnum3 = oxnum2;
            oxnum2 = oxnum1;
            oxnum1 = oxnum;
        }
        printf("i =%2d->oxnumber =%3d \n",i,oxnum);
         
    }
    return 0;

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值