一个球,初始高度100,每次落下回弹一半高度,求第n次落下球走的距离

本文探讨了使用递归与归纳法解决球从特定高度落下并反弹问题的算法实现。通过两种方法计算球在多次反弹过程中的总行程,提供了Python代码示例,并分析了每次落地时球走过的总距离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def get_height(n):
  if n==1:
    eturn 150
  return 100+sum([200*pow(0.5,i) for i in range(1,n)])+100*pow(0.5,n)

for i in range(1,5):
  print get_height(i)

 

150
225.0
262.5
281.25
结果如上,

递归法求解如下:
def get_height(n):
  if n==1:
    eturn 150
  return get_height(n-1)+100*pow(0.5,n-1)+100*pow(0.5,n)

其实思路就是,当前走的路程加上当前高度,再加上当前高度的一半,python何其简洁也

上面有些问题,上面求的是每次落下后回弹到一半时走过的距离,一般是让求第n次落地的距离,
稍做修改即可 :
def get_height(n):
  if n==1:
    eturn 100
  return get_height(n-1)+200*pow(0.5,n-1)

for i in range(1,5):
  print get_height(i)
或者
def get_height(n):
  if n==1:
    eturn 100
  return 100+sum([200*pow(0.5,i) for i in range(1,n)])

for i in range(1,5):
  print get_height(i)
思路和上面差不多,有归纳法和递归法,
归纳法就是写出第一次走的距离,第二次的,第三次的,总结一下规律
递归法,就是当前距离加上回弹高度的2倍,这小题,练递归蛮爽的

转载于:https://www.cnblogs.com/xqnq2007/p/7230999.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值