一个球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下。它在第10次落地时,共经过多少米?第10次反弹多高?
Java代码如下:
public class BallBouncing {
public static void main(String[] args) {
float height=100f; //初始化小球高度为100米
int frequency=10; //一共弹跳十次
System.out.println("十次的总高度为:"+getLength(height,frequency));
}
/**
*求每次小球落地后反跳回原高度一半
*@param height 小球的高度
*@return frequency 小球弹跳的次数
*/
public static float getLength(float height,int frequency ){
float length=0f;
for(int i=1;i<=frequency;i++){ //小球的弹跳循环次数
length+=height; //加上第i次要下降的高度
height=height/2; //第i次下降后返回的高度
if(i==frequency){ //如果是第frequency(弹跳的次数)次,那么这次不加往上的高度
System.out.println("第10次反弹小球的高度为:"+height);
}else{ //小球向上弹跳的高度
length+=height;
}
}
return length; //返回总高度
}
}