为了账号安全,请及时绑定邮箱和手机立即绑定

这个for循环需要计算

 

 一个球距离地面100米 

自由落下来,每次落地弹起高度为原来高度的一半,在落下,一次类推,第十次球弹起的高度为多少 ?整个过程,球运动了多少米?


正在回答

8 回答

<script type="text/JavaScript">

//初始高度100米,sum为球总运行路程;

var h=100; 

var sum=0;

//理想情况会一直运动下去,这里假设弹起1000次

for(var i=1;i<=1000;i++){

     var n=Math.pow(2,i);//n=2的i次方

        sum=300/n+sum;//

        h=0.5*h;

        document.write("第"+i+"次球弹起的高度为:"+h+"米"+"运动路程为:"+sum+"<br/><br/>")

        if(i==10){

            document.write("第10次弹起的高度为:"+ h+"米,<br/>球运动了:"+sum+"米");

            break;

            }

      }

</script>


0 回复 有任何疑惑可以回复我~

你运行下看看,显示了每次弹起的高度和已经运行的路程;

回复 2015415happy:<script language="javascript">

//初始高度100米,sum为球总运行路程;

var h=100; 

var sum=0;

//理想情况会一直运动下去,这里假设弹起1000次

for(var second=1;second<=1000;second++){

        sum=1.5*h+sum;

        h=0.5*h;

        document.write("第"+second+"次球弹起的高度为:"+h+"米"+"运动路程为:"+sum+"<br/><br/>")

        if(second==10){

            document.write("第10次弹起的高度为:"+ h+"米,<br/>球运动了:"+sum+"米");

            break;

            }

      }

</script>


2 回复 有任何疑惑可以回复我~

每次反弹都是上一次高度的一一半 那10次后反弹的高度也不为零啊 20次也不为零 100此也不为零 因为99此有高度 直到无数次的时候才接近零

0 回复 有任何疑惑可以回复我~
var fixedDistance = 100;
var heightOf10TH = 0;
var totalDistance = 0;
for (var i = 0; i < 10; i++) {
    totalDistance += fixedDistance;
    fixedDistance /= 2;
    if(i == 9) {
        heightOf10TH = fixedDistance;
    }
}
document.write("球共运动了: " + (totalDistance + 100) + "米<br />");
document.write("球在第十次弹起的高度为: " + heightOf10TH + "米<br />");

正确解答 ^ 
最后第二行的+100是计算首次降落的距离


0 回复 有任何疑惑可以回复我~
#1

2015415happy 提问者

不理解,可以解释一下吗?谢谢
2016-04-26 回复 有任何疑惑可以回复我~
#2

2015415happy 提问者

var m=100;//球初始高度 var h=0;//球最后弹起的高度 var sum=0;//球总共运动了多少米 for(var i=0; i<10;i++){ sum=sum+m; m=m/2; if(i==9){ h=m;} } document.write("球在第十次弹起的高度为: " + h + "米<br />"); document.write("球共运动了: " +(sum+100)+ "米<br />");
2016-04-26 回复 有任何疑惑可以回复我~
#3

2015415happy 提问者

翻译成这样对吗?如果对,我还是不理解i=0时;函数体是怎么运算的?
2016-04-26 回复 有任何疑惑可以回复我~
#4

DangCode 回复 2015415happy 提问者

你不要想当然的以为最后一次是0啊 上边不是说了么 每次减半 翻译过来就是永远不会为0米,i就是个计数器 从零开始计数 也可以从1开始计数 也可以从100计数 有什么纠结的啊 还有你的 代码if(i==9){h=m;}为什么第十次的时候你要让当前高度变成初始高度啊 怎么可能啊
2016-04-26 回复 有任何疑惑可以回复我~
查看1条回复
var fixedDistance = 100;
var heightOf10TH = 0;
var totalDistance = 0;
for (var i = 0; i < 10; i++) {
    fixedDistance /= 2;
    totalDistance += fixedDistance;
    if(i == 9) {
        heightOf10TH = fixedDistance;
    }
}
document.write("球共运动了: " + totalDistance + "米<br />");
document.write("球在第十次弹起的高度为: " + heightOf10TH + "米<br />");


0 回复 有任何疑惑可以回复我~

上面是试了试第二次的,下面为弹起10次的:

<script language="javascript">

//初始高度100米,sum为球总运行路程;

var h=100; 

var sum=0;

//理想情况会一直运动下去,这里假设弹起1000次

for(var second=1;second<=1000;second++){

        sum=1.5*h+sum;

        h=0.5*h;

        if(second==10){

            document.write("第10次弹起的高度为:"+ h+"米,<br/>球运动了:"+sum+"米");

            break;

            }

      }

</script>


0 回复 有任何疑惑可以回复我~
#1

2015415happy 提问者

这种方面似乎首次弹起是可以这么算,但是2.3、、、、sum=1.5h+sum;似乎就不成立了吧。不懂
2016-04-26 回复 有任何疑惑可以回复我~
#2

死宅男 回复 2015415happy 提问者

回复 2015415happy:以开始下落到弹起到最高处算第一次, 比如第一次100米下落,接触地面到弹起到50米,这个过程算1次,第N次弹起的是第N-1次“h”值的一半,试了试第2次弹起的高度为25米,运行路程为225米,咋不对了?
2016-04-27 回复 有任何疑惑可以回复我~
#3

2015415happy 提问者

谢谢你的回答,我总是想着球落地时,总共运动了多少米,如果不算最后一次(第10次)落地,你的算法是正确的,也就是说球在空中。如果最后一次也落地,需要也加那么一小段路程。
2016-04-28 回复 有任何疑惑可以回复我~

<script language="javascript">

//初始高度100米,sum为球总运行路程;

var h=100; 

var sum=0;

//理想情况会一直运动下去,这里假设弹起1000次

for(var second=1;second<=1000;second++){

        sum=1.5*h+sum;

        h=0.5*h;

        if(second==2){

            document.write("第2次弹起的高度为:"+ h+"米,<br/>球运动了:"+sum+"米");

            break;

            }

    }

</script>


0 回复 有任何疑惑可以回复我~

var h=100;

for(var i=0;i<10;i++){

h=h/2;

}

document.write(h);

0 回复 有任何疑惑可以回复我~
#1

2015415happy 提问者

谢谢,这只是算出来高度,我还是不明白i=0时;函数体是怎么运算的。
2016-04-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这个for循环需要计算

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信