A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© h___ 初级黑马   /  2018-12-14 18:09  /  723 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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+"米" );
}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马