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

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

猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第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 | 猴子吃桃问题。)