原题链接:[递归]母牛的故事
解题思路:
可以设定四个变量分别代指不同年头的母牛。
程序里所使用的变量代表的意义:
a:一个年头的母牛;
b:二个年头的母牛;
c:三个年头的母牛;
d:四个及以上个年头的母牛。
第一年时d=1,其他的则为0。而之后的每一年,既已设四种年头的母牛数分别为a,b,c,d,则下一年四种年头的母牛数分别是:
一个年头的母牛:d+c;
二个年头的母牛:a;
三个年头的母牛:b;
四个及以上个年头的母牛:d+c。
以此为思路编写的代码如下:
递归法:
#include<stdio.h> int cow(int a,int b,int c,int d,int n) { n--; if(n==0) { printf("%d\n",a+b+c+d); return 0; } cow(d+c,a,b,d+c,n); } int main(){ int n; while(1) { scanf("%d",&n); if(n==0) break; cow(0,0,0,1,n); } }
循环法:
#include<stdio.h> int main(){ int n,a,b,c,d; while (1) { a=b=c=0; d=1; scanf("%d",&n); if(n==0) break; while(--n!=0) { d=d+c; c=b; b=a; a=d; } printf("%d\n",a+b+c+d); } }
以上两种方法虽然方法不同,但思路是一样的。
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复