原题链接:[递归]母牛的故事
#include<stdio.h>
long count(int n)
{
long oldOneYearCow = 0;
long oldTwoYearCow = 0;
long oldThreeYearCow = 0;
long newOneYearCow = 0;
long newTwoYearCow = 0;
long newThreeYearCow = 0;
long cowCanBirth = 1;//第一年有一头可以生育的牛
long countNum = 1;//第一年时总共有一头牛
/*i表示年份,上面的初始化数据便是第一年时的数据,循环内从第二年开始计算,循环一次表示过了一年 */
for(int i=2;i<=n;++i)
{
cowCanBirth = oldThreeYearCow + cowCanBirth;/*以往的能生育的牛的数量加上新长到四岁的牛的数量便是今年能生育的牛的数量*/
newOneYearCow = cowCanBirth;//有多少头能生育的牛就会有多少头新出生的一岁牛
newTwoYearCow = oldOneYearCow;//去年的一岁牛长到两岁
newThreeYearCow = oldTwoYearCow;//去年的两岁牛长到三岁
countNum = newOneYearCow+newTwoYearCow+newThreeYearCow+cowCanBirth;
oldOneYearCow = newOneYearCow;//今年的一岁牛到了下一年就会变成去年的一岁牛
oldTwoYearCow = newTwoYearCow;//今年的两岁牛到了下一年就会变成去年的两岁牛
oldThreeYearCow = newThreeYearCow;//今年的三岁牛到了下一年就会变成去年的三岁牛
}
return countNum;
}
int main()
{
int year;
while(scanf("%d",&year)==1&&year!=0)
{
printf("%ld\n",count(year));
}
return 0;
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复