美文网首页经验App:聚合职场优选内容
Python练习实例21 | 猴子吃桃问题。

Python练习实例21 | 猴子吃桃问题。

作者: 暮光微晓破倾城 | 来源:发表于2020-02-23 13:18 被阅读0次

    我们首先来看一下具体的问题。

    猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

    比较简单的解法,是可以采用逆向思维的方法来进行求解,具体如下图所示:

    # 将最后一天的剩余桃子数1赋值给m,第一天猴子采的总数为n
    m = 1 #  将最后一天桃子的数量赋值给m
    for i in range(9,0,-1): # 逆向循环求得总数
        n = (m+1)*2 # 将后一天的数量赋值给前一天
        m = n
    print(n) # 打印出结果
    

    可以看到这种解法非常的简单。

    当然啦,除此之外,我们还可以使用递归函数进行实现

    def f(n): #我们首先定义一个函数
        if n == 1: # 如果n=1 的时候 返回值为1
            return 1
        else: # 否则,返回值为其前一天的数
            return (f(n-1)+1)*2
    print(f(10))
    for _ in range(10,0,-1):
        print("第",_," 天对应的数量为:",f(_))
    

    这种方式,打印出来的结果如下所示:

    1534
    第 10  天对应的数量为: 1534
    第 9  天对应的数量为: 766
    第 8  天对应的数量为: 382
    第 7  天对应的数量为: 190
    第 6  天对应的数量为: 94
    第 5  天对应的数量为: 46
    第 4  天对应的数量为: 22
    第 3  天对应的数量为: 10
    第 2  天对应的数量为: 4
    第 1  天对应的数量为: 1
    

    好了,以上就是今天我们分享的内容啦!

    2020年2月23日
    北京市通州区京贸中心

    相关文章

      网友评论

        本文标题:Python练习实例21 | 猴子吃桃问题。

        本文链接:https://www.haomeiwen.com/subject/rhcjqhtx.html