智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=906315a76b5c14231889351088713f76
题目:猴子吃桃
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少
解法1:逆向思维
程序分析:
1、采取逆向思维的方法,从后往前推断。
2、第10天1个,这个1个怎么来的
3、第9天的,吃掉一半,然后在吃掉1个,剩下来的就是第10天的
4、所以假设x是第9天的,得到:x/2-1=1 → x=2*(1+1)=4
5、同理第8天的=2*(4+1)...
源程序
x2 = 1 #第十天的数量
for day in range(9,0,-1):
x1 = (x2 + 1) * 2
x2 = x1
print ("第一天摘的桃子数量",x1)
运行结果
解法2:递归
程序分析:
分析和上面差不多到第10天的时候返回1
def fun(x):
if x==10:
return 1
else:
return (fun(x+1)+1)*2
print("第一天摘的桃子数量:%d"%fun(1))
运行结果
还有更多其他的解法,欢迎一起交流学习
————————————————
我们的python技术交流群:941108876
智一面的面试题提供python的测试题
使用地址“http://www.gtalent.cn/exam/interview?token=8a33fabdc405d59c90ffca2496195543