这题挺好分析的,首先只涉及两个变量,一个高度h,一个路程s。
高度h每次递减一半,而新的路程s就等于上一次路程s加上2h(反弹+掉落)。
值得注意的是第一次h是在100m掉落,路程s=100,当第一次反弹时回到50m高度再向下掉50m,路程s也增加100(50+50)。
所以我们可以把初始h=100,s=100,即从完成第一次落地开始算,所以只要再落地9次就是我们所要求的值了,思路大概是这样。
class Ball
{
public static void main(String[] args)
{
double h = 100, s = 100; //从100米高度落下,所以s初始值就是100
for (int i = 1; i < 10; i++) //因为第一次已经计算在内(s=100),所以需要在落下9次.即循环9次
{
s = s + h; //每次落下的高度就是相加
h = h / 2; //每次高度都减少一半
}
System.out.println("经过的路程:" + s);
System.out.println("反弹的高度:" + h / 2);
}
} |