初学python算法100例-案例20 猴子吃桃 你还不会吗

Posted 技术专家团-小兔子编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学python算法100例-案例20 猴子吃桃 你还不会吗相关的知识,希望对你有一定的参考价值。

题目:猴子吃桃

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

解法1:逆向思维

程序分析:

1、采取逆向思维的方法,从后往前推断。

2、第10天1个,这个1个怎么来的

3、第9天的,吃掉一半,然后在吃掉1个,剩下来的就是第10天的

4、所以假设x是第9天的,得到:x/2-1=1  → x=2*(1+1)=4

5、同理第8天的=2*(4+1)...

源程序

x2 = 1 #第十天的数量
for day in range(9,0,-1):
    x1 = (x2 + 1) * 2
    x2 = x1
print ("第一天摘的桃子数量",x1)

运行结果

 

解法2:递归

程序分析:

分析和上面差不多到第10天的时候返回1

def fun(x):
    if x==10:
        return 1
    else:
        return (fun(x+1)+1)*2
print("第一天摘的桃子数量:%d"%fun(1))

运行结果

还有更多其他的解法,欢迎一起交流学习

 

 

以上是关于初学python算法100例-案例20 猴子吃桃 你还不会吗的主要内容,如果未能解决你的问题,请参考以下文章

C语言递归问题 猴子吃桃

初学python算法100例-案例30 计算闰年

初学python算法100例-案例28 逆序输出每位数字

java经典算法题——猴子吃桃

初学python算法100例-案例23 输出菱形

初学python算法100例-案例9 间隔1秒输出结果