怎么理解for循环里面的嵌套呀?搞不懂。一个还好理解。两个嵌套。理解起来有点晕。。。求大神指导。。感谢感谢
他颤抖着推开了门,发现后面居然还有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);
}
}
一目了然
有好多怪物洞穴:
开始
挑第一个洞穴,进去,把所有小怪干翻,出来;
再挑第二个洞穴,进去,把所有小怪干翻,出来;
再挑第三个洞穴,进去,把所有小怪干翻,出来;
。。。
再挑第N个洞穴,进去,把所有小怪干翻,出来。
结束
洞穴编号为 i = 1, 2, 3, ..., n
, 小怪编号为 j = 1, 2, 3, ..., m
。n, m
为任意正整数.
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循环的嵌套,可以看一下冒泡算法。
i=1时: j=1,...
j=2,...
j=3....
...
j=9....
i=2时: j=1...
j=2...
...
j=9...
i=3时: j=1...
....
以此类推
i=1时,让j从1跑到i(现在是1),所以,这一次只执行一次,然后i++,i=2了
i=2时,又让j从1跑到i(2),这次执行了2次,然后i++,i=3了
i=3时,.....
就这样一直加,到9时,i=9, j又从1执行到9,又执行9次,然后结束循环
不用管它两个for加起来是什么意思,你就当做是两个单独的for来思考呗。
for
就是按照条件来重复执行同一段代码,只是这段代码里面有for。for里面的for
也是按照条件来重复执行另一段代码。不管有多少个for
都是按照条件来重复执行同一段代码
外面的for我们先称为for1
,里面的for称为for2
。如果for1
是执行10次的,for2
是执行9次的,那每次执行for1
的时候都会执行9次for2
,结果会是总共执行了10×9=90次for2
回到你的例子,你的for1
是执行9次的,for2
是根据当前执行的是第几次for1
来确定执行几次的,所以for1
的第一次时for2
是执行1次,第二次时执行2次,第三次时执行3次...
同样作为一个菜鸟,我更能理解你的困惑.但是我已经理解了.上面各种表述以我菜鸟的眼光来看看不懂.但是请看下面我这么描述.相信你能理解了.
for(起点,终点,i++)
所以 打印出来的长度(个数)就是=终点-起点.
这下你理解了吧?
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
一图胜千言