A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 灰の羽 初级黑马   /  2015-8-25 11:51  /  655 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

5 个回复

倒序浏览
class XiaoCe {
public static void main(String[] args) {
      double h = 100,s = 0;
      for(int i=1; i<=10; i++) {
      s = s + 2*h;
      h = h / 2;
                }
      s=s-100;
     System.out.println("经过路程:" + s);
     System.out.println("最后高度:" + h);
     
        }
}  
回复 使用道具 举报
灰の羽 发表于 2015-8-25 11:56
class XiaoCe {
public static void main(String[] args) {
      double h = 100,s = 0;

我有疑问的是第一次落下和最后一次落下 都不是一个来回,你是怎么区分的?
回复 使用道具 举报
至尊幽蓝 来自手机 中级黑马 2015-8-25 12:31:54
板凳
明显算得不对,for循环内部应该是
{
s+=h;//落至地面
h/=2;//调整h
s+=h;//弹回最高处
}
然后
去掉后面的s-=100;
回复 使用道具 举报
JOKER0819 发表于 2015-8-25 12:12
我有疑问的是第一次落下和最后一次落下 都不是一个来回,你是怎么区分的? ...

h啊,每次h的高度都会减少1/2,最后一次还需要区分吗,总路程S只需不断叠加就行了
double h = 100,s = 0;
      for(int i=1; i<=10; i++) {
      s = h+0.5*h+s;
      h = h / 2;
                }
          s=s-h;
     System.out.println("经过路程:" + s);
     System.out.println("最后高度:" + h);
     
回复 使用道具 举报
这题我记得高中时候心算都能算出来了,现在只能笔算, 算法上应该就是等差数列。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马