解题思路:
这道题看起来很复杂,我们首先要理清解题思路。我们可以找一找规律。如下图,当第n年时,共有a头母牛。
第n年 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
共有a头母牛 | 1 | 2 | 3 | 4 | 6 | 9 | 13 | 19 | 28 |
看完表格,你有没有发现规律?好像没有诶!有规律吗?
规律是有的,但是只有思维活跃的大脑才能发现规律。这是需要时间的。我们要有一双善于观察,善于发现规律的眼睛。
规律:每一年(年数 > 3)母牛的数量 = 前3年母牛的数量 + 前1年母牛的数量
每一年(年数 ≤ 3)母牛的数量 = 每一年的年数
恍然大悟了吧!
既然知道规律了,那么程序就好编写了。
参考代码:
def _cow(year, n1, n2, n3): # 需要两个函数来完成递归,必须知道前三年的母牛数 if year == 0: # 当年数等于0时,把最终结果返回 return n3 return _cow(year - 1, n2, n3, n1 + n3) # 每一年(年数 > 3)母牛的数量 = 前3年母牛的数量 + 前1年母牛的数量 def cow(year): if year < 4: # 每一年(年数 ≤ 3)母牛的数量 = 每一年的年数 return year else: return _cow(year - 3, 1, 2, 3) def main(): # 主函数 years = [] while True: years.append(int(input())) if years[len(years) - 1] == 0: del years[len(years) - 1] for year in years: print(cow(year)) break if __name__ == '__main__': main() |
0.0分
4 人评分