原题链接:[递归]母牛的故事
解题思路:(怎么想就怎么写,把演草纸上的数学解法,用代码复现)
注意事项:
参考代码:
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); List<Integer>list = new ArrayList<>();//集合记录每个数的计算结果 while(true) { int n = sc.nextInt(); if(n==0) { break;//输入0回车会结束循环 } int co=1,ca1=0,ca2=0,ca3=0;//第一年(初始值):可繁殖母牛1个,1岁小牛0个,2岁小牛0个,3岁小牛0个 int i = 1; while(i<n) {//计算第n年的结果要循环n-1次,因为初始值就是第一年的,第1年循环0次,第n年循环n-1次 i++; int lastca1 = ca1; int lastca2 = ca2; co += ca3;//今年可繁殖母牛个数=去年可繁殖母牛个数+三岁小牛个数 ca1 = co; //今年的1岁小牛个数=今年母牛个数 ca2 = lastca1;//今年2岁小牛个数=去年1岁小牛个数。 /*由于1岁小牛的个数在上一步会被更新为今年的个数, 但我要用到去年的值,所以进入循环后就用临时变量将去年的个数存起来, */ ca3 = lastca2;//今年3岁的小牛个数=去年2岁的小牛个数//同理进入循环就用临时变量存起来以便这一步使用 } list.add(co+ca1+ca2+ca3);//把第n年的计算结果放进集合中 } for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i));//遍历集合,按题目要求格式打印出结果 } } }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复