c语言程序编写高空坠球,初学python算法100例-案例19 球高空落地 弹跳N次后高度计算...

这篇博客通过两种方法(列表解析和递归)解决了一个数学问题:球从100米落下并每次反弹回原高度一半的轨迹计算。在第10次落地时,球总共经过的总距离和最后一次反弹的高度被详细计算并输出。这个过程展示了编程在解决数学问题中的应用。
摘要由CSDN通过智能技术生成

题目:计算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])

运行结果

e6ec37a320bb4311b39584af319ca755.jpg

解法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))

运行结果

e6ec37a320bb4311b39584af319ca755.jpg

还有更多其他的解法,欢迎一起交流学习

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值