智一面的面试题提供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