最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

用python解决猴子吃桃问题

Python 少儿编程 2517浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

用python解决猴子吃桃问题

 

这是一道非常经典的问题。让我们来看看怎么解觉吧。。

 

假设第一天桃子的数量为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

 

Ok,结束啦!

您必须 登录 才能发表评论!