December


私信TA

用户名:zzqzz

访问量:1562

签 名:

编程是掌控未来的钥匙。

等  级
排  名 29915
经  验 510
参赛次数 0
文章发表 2
年  龄 12
在职情况 学生
学  校 湖南省怀化市宏宇小学
专  业

  自我简介:

解题思路:


这道题看起来很复杂,我们首先要理清解题思路。我们可以找一找规律。如下图,当第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 人评分

  评论区

  • «
  • »