84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
怎么理解for循环里面的嵌套呀?搞不懂。一个还好理解。两个嵌套。理解起来有点晕。。。求大神指导。。感谢感谢
业精于勤,荒于嬉;行成于思,毁于随。
一图胜千言
有chrome打断点调试,一行行看,你就知道这段代码是怎么跑的了。
他颤抖着推开了门,发现后面居然还有9扇门,门的编号依次是1、2、3、……8、9。 墙上的提示牌:必须打开9扇门后所有的锁,你才能离开这里。 他拿起旁边的一把钥匙, 推开了编号为1的门,里面有1把锁,开锁,关门; 推开了编号为2的门,里面有2把锁,开锁,关门; 推开了编号为3的门,里面有3把锁,开锁,关门; 推开了编号为4的门,里面有4把锁,开锁,关门; 推开了编号为5的门,里面有5把锁,开锁,关门; 推开了编号为6的门,里面有6把锁,开锁,关门; 推开了编号为7的门,里面有7把锁,开锁,关门; 推开了编号为8的门,里面有8把锁,开锁,关门; 推开了编号为9的门,里面有9把锁,开锁,关门。
扯蛋完毕...
写入调试代码 for(var i=1; i<=9; i++) { alert(‘第一层’+i); for(var j=1; j<=i; j++) { alert(‘第二层’+j); } } 一目了然
建议重构代码。
i 的初始值是 1,i <= 9 吗?是的,进入循环 j 的初始值是 1,j <= i 吗?是的,进入循环 ……完事,j 自增 1 j <= i 吗?不是,跳出循环 ……完事,i 自增 1 i <= 9 吗?是的,进入循环 j 的初始值是 1,j <= i 吗?是的,进入循环 ……
我是不是挺无聊的?
nightire的回答已经很详细了。我再说一点: for语句的标准用法是: for( 语句1;语句2;语句3) { //这里写需要执行的代码 }
注意:程序遇到for循环时,先执行语句1,然后判断语句2的执行结果是否为真,如果为真,进入循环体执行循环语句,然后执行语句3,然后再判断语句2的执行结果是否为真,直到语句2返回“假”,退出当前的for循环。
在你给出的代码中,程序执行到第一个for循环时,先执行语句1(初始化i=1),然后判断语句2的返回值是否为“真”,因为i=1,是<=9,所以会进入第一个for循环的循环体,于是遇到了第二个循环体,然后按照我在“注意”里所说的规则执行第二个for循环的代码,直到j==2,此时i还是等于1,所以退出第二层for循环执行第一层for循环,最终i==10,第一层for循环也退出,两层嵌套执行完毕!
如果你想确认自己已经理解了for循环的嵌套,可以看一下冒泡算法。
直到j==2,此时i还是等于1?为什么呀?
执行下外边,再执行里边,再执行下外边..... 周而复始,这个就是还能怎么理解啊.....
@子君,这里可以理解为: 1个for,打印1条线 2个for(嵌套),打印1个面(三角形),这里的三角形 sepmein 已经给出。 3个for(嵌套)....
一图胜千言
有chrome打断点调试,一行行看,你就知道这段代码是怎么跑的了。
他颤抖着推开了门,发现后面居然还有9扇门,门的编号依次是1、2、3、……8、9。
墙上的提示牌:必须打开9扇门后所有的锁,你才能离开这里。
他拿起旁边的一把钥匙,
推开了编号为1的门,里面有1把锁,开锁,关门;
推开了编号为2的门,里面有2把锁,开锁,关门;
推开了编号为3的门,里面有3把锁,开锁,关门;
推开了编号为4的门,里面有4把锁,开锁,关门;
推开了编号为5的门,里面有5把锁,开锁,关门;
推开了编号为6的门,里面有6把锁,开锁,关门;
推开了编号为7的门,里面有7把锁,开锁,关门;
推开了编号为8的门,里面有8把锁,开锁,关门;
推开了编号为9的门,里面有9把锁,开锁,关门。
扯蛋完毕...
写入调试代码
for(var i=1; i<=9; i++)
{
alert(‘第一层’+i);
for(var j=1; j<=i; j++)
{
alert(‘第二层’+j);
}
}
一目了然
建议重构代码。
我是不是挺无聊的?
nightire的回答已经很详细了。我再说一点:
for语句的标准用法是:
for( 语句1;语句2;语句3)
{
//这里写需要执行的代码
}
注意:程序遇到for循环时,先执行语句1,然后判断语句2的执行结果是否为真,如果为真,进入循环体执行循环语句,然后执行语句3,然后再判断语句2的执行结果是否为真,直到语句2返回“假”,退出当前的for循环。
在你给出的代码中,程序执行到第一个for循环时,先执行语句1(初始化i=1),然后判断语句2的返回值是否为“真”,因为i=1,是<=9,所以会进入第一个for循环的循环体,于是遇到了第二个循环体,然后按照我在“注意”里所说的规则执行第二个for循环的代码,直到j==2,此时i还是等于1,所以退出第二层for循环执行第一层for循环,最终i==10,第一层for循环也退出,两层嵌套执行完毕!
如果你想确认自己已经理解了for循环的嵌套,可以看一下冒泡算法。
直到j==2,此时i还是等于1?为什么呀?
执行下外边,再执行里边,再执行下外边.....
周而复始,这个就是还能怎么理解啊.....
@子君,这里可以理解为:
1个for,打印1条线
2个for(嵌套),打印1个面(三角形),这里的三角形 sepmein 已经给出。
3个for(嵌套)....