问题描述:
现有一只猴子,第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天摘了多少个桃子?
代数分析:
第一天:摘n,吃n/2+1,余n-(n/2+1)=n/2-1
第二天: ,吃(n/2-1)/2+1,余(n/2-1)-[(n/2-1)/2+1]=(n/2-1)/2-1
第三天: ,吃[(n/2-1)/2-1]/2+1,余[(n/2-1)/2-1]-{[(n/2-1)/2-1]/2+1}=[(n/2-1)/2-1]/2-1
...
第十天:余1
从上式体会到有一种“递归”的感觉,比如第三天调用第二天的余数;
第二天=(第三天+1)*2 = { [(n/2-1)/2-1]/2-1+1 }*2 = [(n/2-1)/2-1]/2*2 = (n/2-1)/2-1
编程解决:法一(for循环)
x2=1
for day in range(9,1-1,-1): # day=9 |8
x1=(x2+1)*2 # x1=(1+1)*2=4|10
x2=x1 # x2=4 |10
print(x1)
法二(递归函数)
待更新