编程语言
首页 > 编程语言> > JavaScript初学者编程题(16)

JavaScript初学者编程题(16)

作者:互联网

JavaScript初学者编程题(16)

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

HTMl部分
    <!--times代表第几次落地,或者第几次弹起-->
    <input type="text" id="times">
    <button onclick="get()">get</button>
JavaScript部分
function get() {
    var times = parseInt(document.getElementById('times').value);
    //第一次落地之前需要先经过100,所以起始值是100
    var dis = 100;
    //因为第一次落地就是100m,第二次开始才按照公式来计算
    if(times > 1){
        //减一,是因为减去第一次,这里计算的实际上是从第一次落地之后到最后一次落地的距离
        for(var i = 0; i < times - 1; i++){
            dis += 100 * Math.pow(2, -i);
        }
    }
    console.log('第' + times + '落地,共经过' + dis + 'm');
    console.log('第' + times + '弹起' + (100 * Math.pow(2, -times)));
}
思路:小球第一次落地经过100米,之后每两次落地之间经过的距离是100 × 22-n(n代表第几次落地,n需要大于等于2),如第二次落地和第一次落地之间经过的距离就是100 × 22-2 = 100,那么这时候总共经过的路程就是100 + 100 = 200,第三次落地就是100 + 100 × 22-2+ 100 × 22-3 = 100 + 100 + 50 = 250。
而弹起则是在落地之后,向上弹起到达的最高位置,那么弹起的距离就是上一次“从最高处到落地之间经过的距离的一半”,就是100 × 2-n(n代表第几次弹起,n需要大于等于1),第一次弹起为100 × 2-1,第二次弹起为100 × 2-2

标签:落地,22,16,JavaScript,第一次,times,初学者,100,弹起
来源: https://blog.csdn.net/weixin_44344236/article/details/113479300