黑马程序员技术交流社区
标题: 每天小测 [打印本页]
作者: 灰の羽 时间: 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 12:31
明显算得不对,for循环内部应该是
{
s+=h;//落至地面
h/=2;//调整h
s+=h;//弹回最高处
}
然后
去掉后面的s-=100;
作者: 灰の羽 时间: 2015-8-25 12:46
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 |