Javascript 以下程序是否在外部循环的第一次迭代中执行嵌套循环?
在嵌套循环Javascript 以下程序是否在外部循环的第一次迭代中执行嵌套循环?,javascript,for-loop,Javascript,For Loop,在嵌套循环i=2和j=2的第一次迭代中。但是,嵌套循环的条件是j
i=2
和j=2
的第一次迭代中。但是,嵌套循环的条件是j
。这是否意味着不执行嵌套循环?发生了什么事
showPrimes(10);
函数showPrimes(n){
下一次:
for(设i=2;i }
如果素数应该为素数返回true,非素数返回false,那么当检测到非素数时,只需返回false即可。正如评论所指出的,您不需要两个循环就可以做到这一点。您可以简单地从2循环到n-1,尝试在没有余数的情况下进行除法。嵌套循环不会在外部循环的第一次迭代中执行,即当i==2
时。在外循环的第二次迭代中,我们有i==3
,因此嵌套循环条件现在为j<3
,因此它用值j==2
计算一次。对于外部循环的第三次迭代,我们有i==4
,因此嵌套循环的值2和3将被计算两次。等等
希望对您有所帮助-Carlos这里有一张图表,详细说明了您的课程流程:
+---+---+-------------------------------------------------------------+
|i | j |注释|
+---+---+-------------------------------------------------------------+
|2 | 2 |嵌套循环条件为false。因此,2是一个素数|
|3 | 2 | 3不能被2整除。让我们继续寻找|
|3 | 3 |嵌套循环条件为false。因此,3是一个素数|
|4 | 2 | 4可被2整除。因此,它不是质数|
|5 | 2 | 5不能被2整除。让我们继续寻找|
|5 | 3 | 5不能被3整除。让我们继续寻找|
|5 | 4 | 5不能被4整除。让我们继续寻找|
|5 | 5 |嵌套循环条件为false。因此,5是一个素数|
|6 | 2 | 6可被2整除。因此,它不是质数|
|7 | 2 | 7不能被2整除。让我们继续寻找|
|7 | 3 | 7不能被3整除。让我们继续寻找|
|7 | 4 | 7不能被4整除。让我们继续寻找|
|7 | 5 | 7不能被5整除。让我们继续寻找|
|7 | 6 | 7不能被6整除。让我们继续寻找|
|7 | 7 |嵌套循环条件为false。因此,7是质数|
|8 | 2 | 8可被2整除。因此,它不是质数|
|9 | 2 | 9不能被2整除。让我们继续寻找|
|9 | 3 | 9可被3整除。因此,它不是质数|
+---+---+-------------------------------------------------------------+
希望这能解释为什么即使嵌套循环在
i=2
和j=2
时不执行,程序仍能工作。好的,让我们分步骤解释这个嵌套循环:
i=2
和j=2
,因此外部循环将执行,但嵌套循环将不执行。跳过内部循环它将打印2
,它位于主循环的末尾console.log(i)
i=3
。这次j
是true
所以嵌套循环开始
i=3
和j=2
continue
将不会执行i%j
不是0
,因此它将结束并且j
增加。现在i=3
和j=3
和嵌套循环退出并打印3
i=4
和嵌套循环,因为j=2
和j这两个嵌套循环的目的是什么。嵌套循环没有任何效果…函数showPrimes(n){nextPrime:for(let i=2;i语句?第一次迭代时不是这样。因此,2
是一个素数。这并不能回答OP的问题。感谢您的解释,正如您在第4步中所说,j值为3,在第5步中,j值再次变为2。这是如何发生的?@Raghuram我添加了一个explanation@Raghurami
是外部for循环的本地。由于
循环的外部没有结束,因此其值不会像j
那样改变。但是j
是内环的局部。内部循环是多次创建的,因此每次启动内部循环时,j
的值都会被破坏并初始化为2
。感谢我是js新手,似乎有很多东西需要学习,最后我理解了它,但我不理解的是,我的值从一开始就在增加,因为我++,为什么j值在几次迭代后会回落到2,这是因为在外循环的每次迭代开始时都显式地设置了j=2
。