0
点赞
收藏
分享

微信扫一扫

感受编程与数理统计“浑然天成”妙趣——利用Python解决一古典问题

生活记录馆 2022-04-14 阅读 24
python

问题描述:

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

                法二(递归函数)

待更新
举报

相关推荐

0 条评论