C语言 递归调用 求高手帮忙啊 救命啊!!!!!!!

编程求解问题。若以头小母牛,从出生起第四年开始每年生一头母牛,按此规律,第n年时有多少头母牛。(用递归函数方法求)#include<stdio.h>intcownum(i... 编程求解问题。若以头小母牛,从出生起第四年开始每年生一头母牛,按此规律,第n年时有多少头母牛。(用递归函数方法求)

#include <stdio.h>
int cownum(int n);
void main()
{
int num,n;
printf("Please input the year:");
scanf("%d",&n);
num=cownum(n);
printf("the numbers of cow is %d\n",num);
}
int cownum(int n)
{
if(n<4)
return 1;
else
return cownum(n-1)+cownum(n-3);

return cownum(n-1)+cownum(n-3); 这条语句让我百思不得其解 求高手详细讲解。。
展开
 我来答
purplerue
2011-03-09 · 超过14用户采纳过TA的回答
知道答主
回答量:60
采纳率:100%
帮助的人:46.8万
展开全部
当n<4时,只有一头牛,一直没有新牛,所以cownum()为1;
当n>=4时,第n年牛的数量cownum(n)为前一年的牛的数量cownum(n-1)加上新生下来的牛的数量。
因为每头牛每年生育一头小牛,所以新出生的小牛的数量等于之前可以生育的牛的数量。而可以生育的牛的数量为年龄大于等于3周岁的牛的数量,即第n-3年时的牛的数量,即cowmun(n-3)。(注:n-2,n-1年新出生的牛没有生育能力)。
义昀欣ek
2011-03-09 · TA获得超过3298个赞
知道小有建树答主
回答量:6776
采纳率:0%
帮助的人:2210万
展开全部
每年母牛的数量是如下的数列:
1,1,1,2,3,4,6,9,13,19,28,41......
可知,从第四年起,每年牛数是n-1年牛数与n-3年牛数之和.
这是从数列查看规律可以得出的结论.

细想的话,第n年的母牛数等于昨年的母牛数加上增长的母牛数.昨年的母牛数是cownum(n-1).增长的母牛数是多少呢?因为母牛从第四年开始就产小牛,那么3年前的所有母牛如今都要生一头小牛,那么增长牛数为cownum(n-3).

此递归类似斐波拉契数列,是非常消耗资源的.当计算40年的牛数时,大约需要1T的内存.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户66591
2011-03-09 · TA获得超过164个赞
知道答主
回答量:202
采纳率:0%
帮助的人:0
展开全部
int di(int n)
{
int i=1;
if(n==1)
return n;
else
return n*di(n-1) ;
}

int main()
{
int n;
scanf("%d",&n);
printf("%d\n",di(n));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuanhanhua987
2011-03-09 · 超过10用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:39.6万
展开全部
这种东西用语言说的话很麻烦,你自己带进几个数去试试,看看规律就知道了,()+()。。。。每一个()就代表一只小母牛,当然,()还是会在分解成()+()的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
angelanana27
2011-03-09 · 超过23用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:58.3万
展开全部
去年这个时候饿母牛数是cownum(n-1),那么到今年正好增加了cownum(n-3)头牛,加起来就是今年的母牛数cownum(n)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式