通过python实现猴子吃桃问题_python猴子吃桃问题递归
1、问题描述:
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩下一个桃子了。求第一天共摘了多少。
2、问题分析:
这一题最初分析时以为用递归的方式进行输出,但是陷入了一个误区,以为第十天剩余的最后一个和第九天没有关联性,所以一直在纠结。想通了以后其实是非常的简单
3、代码实现:
def monkeyEatPeach():
# 定义一个变量用于存放剩余的桃子,初始值是第十天的1
rest = 1
# 定义一个变量用于存放总共的桃子数目
sum = 0
# 从第九天到第一天的进行循环输出
for i in range(9, 0, -1):
sum = 2 * (rest + 1)
# 第i天的桃子总数应该是第i-1天吃剩下的桃子总数
rest = sum
return sum
print(monkeyEatPeach())
4、代码输出:
1534
5、检查正确性:
猴子吃桃 | 吃的 | 剩下的 |
第1天 | 768 | 766 |
第2天 | 384 | 382 |
第3天 | 192 | 190 |
第4天 | 96 | 94 |
第5天 | 48 | 46 |
第6天 | 24 | 22 |
第7天 | 12 | 10 |
第8天 | 6 | 4 |
第9天 | 3 | 1 |
第10天 | 1 | 0 |