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

一个简单,但是很困扰我的问题求教

一个简单,但是很困扰我的问题求教

天窗的蚂蚁 2016-01-29 09:34:12
我先完整的叙述一下我的疑问点,希望能得到大家的帮忙。这是求1+2+3.....+100的和,输出的结果也是5050。我想问一下,在while循环里面,sum每次的值是多少?比如,一开始,n=1,sum=sum+n,即0=0+1,这时sum就等于123了。n++后,n=2了。sum=sum+n,这时sum的值是0呢还是1呢?sum=1+2,sum变成3了。n++,n变成3了,sum=sum+n,即sum=3+3,sum变成了6。以此类推。我的疑问就是,在每一次循环里,sum=sum+n这个等式里,第二个sum的值是不是上一次循环得到的值,还是一直保持为0。如果是上一次循环得到的值,那么sum一系列下来,就应该等于sum=1,3,6,10.....5050。这个我把sum=sum+n后面加了一个"<br/>"。输出的结果是1234567789.....100。也即是说n=1时,sum=sum+n,即0=0+1,sum=1了。n=2时,sum=sum+n,即0+2=2,sum=2.以此类推。那么跟上面得到的sum=1,3,6,10.....5050矛盾了。sum=sum+n这个等式中,第二个sum的值到底是0还是上一次循环得到的值
查看完整描述

7 回答

已采纳
?
pardon110

TA贡献1038条经验 获得超227个赞

第二个sum值是上一次循环得到的值,我这样写,你就会明白了。

var n=1;
var sum=0;
while(n <= 5)
{
  //console.log(sum);
  sum = sum+n+"<br/>";
  n++;
  console.log(sum);         // 循环内部打印   
}
console.log(sum);            // 循环外部打印

结果如下

1<br/>                        
1<br/>2<br/>
1<br/>2<br/>3<br/>
1<br/>2<br/>3<br/>4<br/>

1<br/>2<br/>3<br/>4<br/>5<br/>

问题在于字符“<br/>”,sum+n+"<br/>" 所得结果是一个字符串拼接,每次循环即是字符串拼接,而非是算术计算。 你直接使用循环外打印就会出现1 2 3 4 5 (页面实际换行显示)

查看完整回答
反对 回复 2016-01-29
?
慕粉3311984

TA贡献1条经验 获得超0个赞

那个能不能那个五子棋的源代码给我啊,

查看完整回答
反对 回复 2016-05-30
?
weibo_微天下微生活_0

TA贡献3条经验 获得超0个赞

什么乱七八糟的,n=2时,sum怎么就0+2了,sum=0的值又不在循环语句中

查看完整回答
反对 回复 2016-01-30
?
miku61

TA贡献3条经验 获得超2个赞

sum-sum+n+"<br/>"

我知道想要的表达是将每次的sum都输出一遍。但是数值之后加上“字符”后,就会使得sum变成一个字符串了。(可以利用 typeof函数测试一下,alert(typeof sum);)我觉得应该可以这样做:

<script>
        var n=1,sum=0;
        while(n<=100){
            sum=sum+n;
            document.write( sum+'<br>');
            n++;
        }
        document.write(sum);
    </script>

相信运行之后你就会解决你的疑惑了。

查看完整回答
反对 回复 2016-01-29
?
emloxe

TA贡献1条经验 获得超0个赞

最简单理解的方法 就是 在浏览器中断点测试

查看完整回答
反对 回复 2016-01-29
?
Robin_1991

TA贡献1条经验 获得超0个赞

你可以在里面打断点 然后 每循环一次 看一下当前的sum和n的值哟。。

var sum=0;

var n=1;

while(n<=100){

sum=sum+n;

debugger;

n++;

debugger;

}


打开f12刷新    然后再 console里面打印出当前断点n 和 sum的值 慢慢看吧

查看完整回答
反对 回复 2016-01-29
?
Caballarii

TA贡献1123条经验 获得超629个赞

数值型加"<br/>"是什么鬼

你要测试也应该这么写:

while(n<=100){
    document.write(sum);
    document.write("&nbsp;");
    sum=sum+n;
    document.write(sum);
    document.write("<br/>");
}

这样就能看出每一步的值了

查看完整回答
反对 回复 2016-01-29
  • 天窗的蚂蚁
    天窗的蚂蚁
    额,好吧。您能给我解答一下疑惑吗
  • Caballarii
    Caballarii
    sum=1,3,6,10.....5050,你给sum加了"<br/>",破坏了原来的代码,所以得不到正确的值, 第二次循环之前sum=1,上次循环结束时候的值. sum=sum+n的意思是sum的当前值加上n的结果再赋值给sum
  • 天窗的蚂蚁
    天窗的蚂蚁
    谢谢您,弄明白了
  • 7 回答
  • 0 关注
  • 2081 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信