全国服务热线:400-6263-721

位置:南昌童程童美机器人少儿编程培训学校 > 学校动态 > 用Python解决猴子吃桃问题

用Python解决猴子吃桃问题

来源:南昌童程童美机器人少儿编程培训学校时间:2022/3/6 16:14:46

  猴子吃桃问题是数学中的一道经典问题,学习过相关数学知识的人固然已经知道该如何解答了,但还没有学到这部分知识的孩子该怎么办呢?其实接触了编程的孩子就可以用编程知识来解决这个问题了,比如Python,下面跟随童程童美少儿编程培训来动手试试看,用Python解决猴子吃桃问题。

  猴子第1天摘下了若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第2天早上又把剩下的桃子吃掉了一半,又多吃了一个,然后每天早上都吃了前剩下的一半零一个,到第10天早上想吃时,发现只剩下一个桃子了,求天共摘了多少个桃子?

  假设天桃子的数量为x,那么当天吃掉的桃子为 x/2+1;

  可以得出第二天的桃子的初始数量为 x-(x/2+1) = x/2-1.

  按这个规律排列下去,根据题目可知,第十天的桃子数量为1.

  同时,我们可以知道天的桃子的数量,和第二天的桃子数量之间的关系为:(第二天桃子的数量+1)*2

  如果我们把每天的初始桃子数量看作一个数列,并从**后倒序排列的话,由于我们知道这个数列的个数字,那这个问题就可以用递归函数来解决了。

  我们把这个函数命名为f(n),n取值从1到10,代表倒数天到倒数第十天.

  首先,倒序的第1天是一个桃子,也即f(1)=1。

  从前面分析我们已经知道,连续两天之间的桃子的数量之间的关系,用等价的表达式可以表示为:也即f(n)=(f(n-1)+1)*2,有了这个规律,我们就可以写出下面的程序代码:

  def f(n):

  if n == 1:

  return 1

  else:

  return (f(n-1)+1)*2

  print(f(10))

  用python执行,打印的结果是1534。

  然后把每天的初始的打印桃子数量打印出来:

  for _ in range(10,0,-1):

  print(_,”—>”,f(_))

  10 —> 1534

  9 —> 766

  8 —> 382

  7 —> 190

  6 —> 94

  5 —> 46

  4 —> 22

  3 —> 10

  2 —> 4

  1 —> 1

  按步骤运行,这样结果也就出来啦!

  直接用Python编程,短短几行代码,结果就输出来了,复杂的数学问题是不是也简单多了呢?

领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/1675/news/494083/违者必究! 以上就是南昌童程童美机器人少儿编程培训学校 小编为您整理 用Python解决猴子吃桃问题的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-6263-721