猴子偷桃问题,
猴子偷桃猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了,求第一天共摘了多少桃子?
题目分析
从第一天开始想可能不是那么简单,那么我们就倒过来想把。从第十天开始想,第十天还剩1个桃子,那么第九天就还剩(1+1) × 2 ,第八天还剩((1+1)×2)×2
哎~~,没错发现了我们在做重复的事情,所以这时候递归大法就来了!,下面上代码!
def monkey_and_pench(n):
"""
递归计算猴子吃桃问题
:param n: 天数
:return: 第一天摘的桃子
"""
if n == 1:
return 1
else:
return (monkey_and_pench(n - 1) + 1) * 2
if __name__ == '__main__':
print(monkey_and_pench(10))