【程序10】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多
输出结果:
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多
少米?第10次反弹多高?
<pre name="code" class="java">
public class BallFlip {
public static void ballFlip(double m, double n){
StringBuilder sb = new StringBuilder();
double height = m; //从m米开始落下来
double sum = m + m/2; //第一次落下到弹上来 ,所走的米数 = 本身的高度 + 本身的高度 / 2
System.out.println("第0次所在高度:" + height + " ");
sb.append(m +" + " + m/2 + " + ");
for(int i=0; i<n; i++){
height = m/2; //第i次,落下后反弹的高度
m = height;
System.out.println("第"+ (i+1) +"次所在高度:"+height + " ");
if(i+1 >= n){
sum += height; //最后一次没有 : 本身的高度 / 2
continue;
}
sum += height + height/2; //第i次落下到弹上来 ,所走的米数 = 本身的高度 + 本身的高度 / 2
sb.append(height +" + " + height/2 + " + ");
if(i%5 == 0){
sb.append("\n");
}
}
sb.insert(0, sum + "=");
String s = sb.substring(0, sb.length()-2);
System.out.println();
System.out.println(s);
}
public static void main(String[] args) {
ballFlip(100, 10);
}
}
输出结果:
第0次所在高度:100.0
第1次所在高度:50.0
第2次所在高度:25.0
第3次所在高度:12.5
第4次所在高度:6.25
第5次所在高度:3.125
第6次所在高度:1.5625
第7次所在高度:0.78125
第8次所在高度:0.390625
第9次所在高度:0.1953125
第10次所在高度:0.09765625
299.8046875=100.0 + 50.0 + 50.0 + 25.0 +
25.0 + 12.5 + 12.5 + 6.25 + 6.25 + 3.125 + 3.125 + 1.5625 + 1.5625 + 0.78125 +
0.78125 + 0.390625 + 0.390625 + 0.1953125 + 0.1953125 + 0.09765625