Python编程创造营之猴子吃桃任务小结
【摘要】 Python编程创造营实验手册的猴子吃桃问题分析及求解
原实验任务来自“如果”和“复读机”实验指导手册(第9页)
问题描述如下:
计算猴子吃桃问题。猴子第 1 天摘了若干个桃子,当即吃了一半零一个;第 2 剩下的吃了一半零一个,一直循环。到第十天时想吃就剩下一个桃子。求第一天摘了几个桃子?
笔者使用华为云ModelArts平台求解猴子吃桃问题,ModelArts平台代码截图如下:
关键代码解释如下:
这道题其实很适合动态规划的倒推思想,已知猴子第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)