本帖最后由 h___ 于 2018-12-14 18:13 编辑
先和大家分享一道题目:
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,
共经过多少米?第10次反弹多高?
刚开始看见这道题目,我一般用数学解题思路思考。
先是100/2=50米,然后想办法让他循环10次,难点在于100的值需要自动更换成上一次升起的高度。
然后就是 反弹高度=反弹高度/2,== num = high * 2;
因为java中的=号与数学中的等号不同。java中值的是赋值,把等号左边的值赋给右边,这样就刚好解决了第一个
难点。循环10次,这个可以看一下公式,本人比较喜欢使用for循环。
然后第二个难点在于共经过多少米。需要获取每次变化的高度相加,
等于num = num + high * 2。加了一个i变量,这样增加程序的灵活性。
public class Test {
public static void main(String[] args) {
double num = 100;// 高度100米
double high = num / 2; //第一次反弹反弹高度
int i=3;
for ( int i1 = 1;i1< i;i1 ++){
num = num + high * 2; //第i次落地经过多少米
high = high / 2;//第i次反弹的高度
}
System.out.println("第"+i+"次落地经过" + num+"米");
System.out.println("第"+i+"次反弹" + high+"米" );
}
} |
|