原题链接:[递归]母牛的故事
解题思路:
while True + break解决多行输入问题,列表存储解决超时问题,my_list[ ]存储每一年的母牛数
注意事项:
当且仅当n>before_max(历史最大输入)时,才允许更新my_list[ ]和before_max
如果当前输入比之前的还小,就不必更新my_list[ ]而直接调用即可
举例:
第一次输入n = 7 my_list=[1,2,3,4,6,9,13] before_max=7
第二次输入n = 6 小于before_max,不必更新my_list,直接调用my_list[5]即可,
第三次输入n = 8 大于before_max,接着上一次更新my_list=[1,2,3,4,6,9,13,19] before_max=8
参考代码:
my_list = [1,2,3] #前三年母牛数 before_max = 3 #默认最大历史输入为3 while True: n = int(input()) if n == 0: break #如果输入0则退出运行,否则将不断循环 else: if n > before_max: #如果当前输入最大,则更新my_list,否则不更新 for i in range(before_max,n): #接着上次继续更新my_list my_list.append(my_list[i-1]+my_list[i-3]) before_max = n #在n>befora_max的前提下,更新before_max print(my_list[n-1]) #my_list[n-1]即为第n年的母牛数
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复