黑马程序员技术交流社区

标题: 每天小测 [打印本页]

作者: 灰の羽    时间: 2015-8-25 11:51
标题: 每天小测
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?


作者: 灰の羽    时间: 2015-8-25 11:56
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);
     
        }
}  

作者: JOKER0819    时间: 2015-8-25 12:12
灰の羽 发表于 2015-8-25 11:56
class XiaoCe {
public static void main(String[] args) {
      double h = 100,s = 0;

我有疑问的是第一次落下和最后一次落下 都不是一个来回,你是怎么区分的?
作者: 至尊幽蓝    时间: 2015-8-25 12:31
明显算得不对,for循环内部应该是
{
s+=h;//落至地面
h/=2;//调整h
s+=h;//弹回最高处
}
然后
去掉后面的s-=100;
作者: 灰の羽    时间: 2015-8-25 12:46
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);
     
作者: shdosh    时间: 2015-8-25 23:05
这题我记得高中时候心算都能算出来了,现在只能笔算, 算法上应该就是等差数列。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2