有一头母牛,它每年初生一头小母牛,每头小母牛从第四个年头起,每年年初也生一头小母牛,那么第二十年时

 我来答
heheway0
2017-05-05
知道答主
回答量:16
采纳率:0%
帮助的人:3.8万
展开全部
这道题感觉有一点歧义,“第二十年时”,我这里理解为“第二十年年初,母牛生产过后”进行解题。
设置两个变量
cow =》可以生产的母牛
little_cow[] =》小母牛
1:每年年初,新增小母牛等于可以生产的母牛
2:当小母牛长到4岁,升级为大母牛,并在该年年初可以生产
用python编写代码如下:
#!/usr/bin/Python
cow = 1
little_cow = []

for i in range(1,20+1): //20年
if len(little_cow):
for j in range(0,len(little_cow)):
little_cow[j] = little_cow[j]+1 //小母牛每年长一岁
if little_cow[j] == 4: //当小母牛4岁时,升级成大母牛
cow = cow + 1

new_little_cow = cow //这三句是把年初新产的牛加入数组
for n in range(0,new_little_cow):
little_cow.append(1)
all_cow = cow //计算总牛数
for i in little_cow: //总牛数=可以生产的母牛+小于4岁的小母牛
if i <4:
all_cow = all_cow +1
print("The nume of cows:",all_cow)
reckless狗
2017-06-04
知道答主
回答量:2
采纳率:0%
帮助的人:1954
展开全部
排出前几年牛的情况
第一年 第二年 第三年
2 3 4
第四年 第五年 第六年
6 9 13
19 28 41
第一年牛会生一头小牛,所以第一年结束时有2头,第二年结束时有3头,第三年结束时有4头,这没有问题吧
第四年起,第一年的小牛可以再生小牛,所以为6,第五年时,第二年的小牛也可以再生小牛,所以为9,第六年时,第三年的小牛也可以再生小牛,规律是:当年的牛的数量等于三年前的牛的数量加前一年的牛的数量(因为3年前的牛都可以再生小牛,小牛是多出来的),以此类推.这道题是计算机语言中常考的一道题,楼主慢慢算吧,不懂追问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大咖zln
2017-04-21 · TA获得超过1010个赞
知道小有建树答主
回答量:1015
采纳率:12%
帮助的人:214万
展开全部
解释还是很简单的,先明确f(n)的含义,第n年有的牛数
第一个公式,不用多说,第零年(开始),第一年,第二年,第三年,都只有1头牛
第四年后,牛的数量由两部分构成,去年的所有牛和所生下的小牛组成,前者就是f(n-1),应该没有异义;由于不是所有牛都能生小牛,只有3牛以前的老牛才会生小牛,而每只老牛只生一只小牛,第n年所生牛的数量就应该是f(n-3)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lswwang
2012-07-11 · 贡献了超过146个回答
知道答主
回答量:146
采纳率:0%
帮助的人:32.5万
展开全部
应该有1873头牛了。不信请看程序:(运行一下就知道咯,第多少年后就输入多少,如这里是20)
#include<stdio.h>
int f(int n);
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n!=0)
{
printf("%d\n",f(n));
}
return 0;
}
int f(int n)
{
if(n==1) return 1;
else if(n==2) return 2;
else if(n==3) return 3;
else if(n==4) return 4;
else return f(n-1)+f(n-3);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
恽润XR
2017-03-22 · TA获得超过1289个赞
知道小有建树答主
回答量:527
采纳率:20%
帮助的人:155万
展开全部
1+1+2+3+4+5+6=22头

所以20年后有22头
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式