智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=906315a76b5c14231889351088713f76
题目:计算N次后高度
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
解法1 列表
程序分析
通过列表将每次的高度以及反弹高度添加
程序实现
sum = []
height = []
hei = 100.0 # 起始高度
for i in range(1, 11):
# 从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下)
if i == 1:
sum.append(hei)
else:
sum.append(2*hei)
hei /= 2
height.append(hei)
print('总高度:tour = %.3f'%sum(sum))
print('第10次反弹高度:height = %.3f'%height[-1])
运行结果
解法2 递归
程序分析
通过递归调用计算高度
程序实现
def height(n):
if n==0 :
return 100
else:
return height(n-1)/2
sum1=0
count=10
for i in range(0,count):
if i==0:
sum1=sum1+height(i)
else:
sum1=sum1+2*height(i)
#print(height(i))
print('总高度:tour = %.3f'%sum1)
print('第10次反弹高度:height = %.3f'%height(10))
运行结果
还有更多其他的解法,欢迎一起交流学习
我们的python技术交流群:941108876
智一面的面试题提供python的测试题
http://www.gtalent.cn/exam/interview?token=906315a76b5c14231889351088713f76