zoukankan      html  css  js  c++  java
  • 一个球,初始高度100,每次落下回弹一半高度,求第n次落下球走的距离

    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倍,这小题,练递归蛮爽的
  • 相关阅读:
    辣条君写爬虫1【贝壳房价爬取】
    如何在 Windows 上创建一个新的 GPG key
    Protocol Buffers 开发者指南
    Docsify 的边栏目录如何设置
    Docker 容器的网络
    Discourse 如何添加 Google Analytics GA4 代码
    Docker 引擎
    Docker 引擎
    Docker 引擎
    Docker 引擎概述
  • 原文地址:https://www.cnblogs.com/xqnq2007/p/7230999.html
Copyright © 2011-2022 走看看