vi设计网站排行榜,工程建筑公司网站,公司做网站之前要准备什么,网络营销推广的类型有哪些文章预览#xff1a; 题目python解法一#xff1a;运行结果 python解法二#xff1a;运行结果 python解法三#xff1a;运行结果 题目
猴子吃桃问题#xff1a;猴子第一天摘下若干个桃子#xff0c;当即吃了一半#xff0c;还不过瘾#xff0c;又多吃了一个。 第二天早… 文章预览 题目python解法一运行结果 python解法二运行结果 python解法三运行结果 题目
猴子吃桃问题猴子第一天摘下若干个桃子当即吃了一半还不过瘾又多吃了一个。 第二天早上又将剩下的桃子吃掉一半又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时见只剩下一个桃子了。求原来它一共摘了多少只桃子。
这是一个比较简单的python习题。
python解法一
我们从后往前想最后一次不就剩1个了吗那么前一天剩多少个 和容易想到2*12那么我们倒序想 就是 a n 1 2 ∗ a n 2 a_{n1}2*a_n2 an12∗an2
def count(day):a1for i in range(day-1):aa*22return a
print(第10天共摘了{}桃子.format(count(10)))
运行结果
第10天共摘了1534桃子
python解法二
我们可以使用递归的办法每次减小天数天数为1的时候是1 代码如下:
def monkey_count(day):if day1:return 1else:return 2*monkey_count(day-1)2print(第{}天剩一个那总共有{}.format(10,monkey_count(10)))
运行结果
第10天剩一个那总共有1534
python解法三
让我们算最终解法:复杂度最低的算法我们干嘛不寻找规律完全解出这个通项岂不美哉。 由上面我们推导出了公式 a n 3 / 2 ∗ 2 n − 2 a_n3/2*2^n-2 an3/2∗2n−2 那编程就容易多了 代码如下
aint(input())
count3*2**(a-1)-2
print(第{}天剩一个那总共有{}.format(a,count))
运行结果
输入10 第10天剩一个那总共有1534