Python编程创造营之猴子吃桃任务小结

举报
爱学习的多宝 发表于 2021/04/04 19:38:05 2021/04/04
【摘要】 Python编程创造营实验手册的猴子吃桃问题分析及求解

原实验任务来自“如果”和“复读机”实验指导手册(第9页)

 问题描述如下:

计算猴子吃桃问题。猴子第 1 天摘了若干个桃子,当即吃了一半零一个;第 2 剩下的吃了一半零一个,一直循环。到第十天时想吃就剩下一个桃子。求第一天摘了几个桃子?

笔者使用华为云ModelArts平台求解猴子吃桃问题,ModelArts平台代码截图如下:

猴子吃桃.JPG

关键代码解释如下:

    这道题其实很适合动态规划的倒推思想,已知猴子第10天只剩下第1个桃子,则猴子在第9天应是(1+1)*2=4个桃子;现已知猴子第9天剩下的是4个桃子,则猴子第8天时应是(4+1)*2=10个桃子;现已知猴子第8天是10个桃子,则以此类推。可一直倒推至第1天的桃子数量。

    故用python代码求解此题时,

    第一段代码采用了倒推方法使用for 循环,从第9天开始计数,设置步长-1,倒推至第1天。循环结束的同时,计算出第1天猴子吃桃数量。

    第二段代码则是采用递归函数的方法进行正向求解,欲求第1天猴子吃桃数量,则需要计算出第2天猴子吃桃数量;欲求第2天猴子吃桃数量,则需要计算出第3天猴子吃桃数量。如此一直递归,已知第10天猴子的桃子数量是1,而前一天的猴子吃桃数量与这一天有着数量上的对应关系。则递归可求解。

 实验小结:

     综上所述,猴子吃桃问题看似是个简单的数学计算问题,但背后的倒推和递归思想还是颇让人回味的。题目虽小,思想很大~

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。