母牛的故事c语言用循环语句,编程练习:母牛的故事* 题解

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

输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0n=0表示输入数据的结束,不做处理。

对于每个测试实例,输出在第n年的时候母牛的数量。

每个输出占一行。

上面是题目要求

一开始,我把0当成是要处理的数,所以一直做不出来。

后来看了一下题目,一口老血喷了出来,

原来0是结束的标志。

以后做题要仔细看条件才行。。。。。

分割线

这是一条典型的递归题,

一层一层推过去。

这只是某斐数列经典例题的改进版。

由大于4开始,

每一个都递归到4年前的牛去。看代码就明白了:

按着这个思路走:总数量=该年生下的和前一年一共有多少只的总和

还有一个要注意的:

在进行输出时,要用数组存数据,不然你输入一个就会输出一个,这不符合要求

代码如下:

#includeint fun(int n);

int main()

{

int i,j=0;

int a[81];

do{

scanf("%d",&i);

if(i!=0)

{

a[j]=fun(i);

j++;

}

}while(i!=0);

j=j-1;

for(i=0;i<=j;i++)

printf("%d\n",a[i]);

return 0;

}

int fun (int n)

{

if(n<5)

return n;

else

return fun(n-3)+fun(n-1);

}

一开始做的时候,

脑子抽了,

将递归写成fun(n-4)+fun(n-1)

实际不是,

因为被第四个年头迷惑了,

母牛第二年生下小牛,该牛第五年生下儿子

也就是隔了三年。

被题目理解不到位,

要懂得根据output推结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值