-3
var num=0;
outermost: for(var i=0;i<10;i++)
{
  for(var j=0;j<10;j++)
  {
     if(i==5 && j==5)
      {
        break outermost;
      }
   num++;
  }
}
console.log(num); //Answers 55

J の値が 0 から 1 に遷移すると、J のループに入り、j ループが 10 回実行されます (私が思うに)、このループはどのように壊れますか? プログラミング初心者です 親切に Yelp!

4

3 に答える 3

1

ステートメントが入力されると、ステートメントbreakが実行されifます。

が に評価されると、ifステートメントが入力されます。i==5 && j==5true

これは、が 5 に等しいiANDjが 5 に等しい場合に発生します。

Foriが 5 になるには、外側のループを完全に 5 回実行する必要があります (i = 0,1,2,4 の場合)。これは、内側のループが 5*10 = 50 回実行されることを意味します。内側のループの最後の実行で 5 になるにはj、内側のループを 5 回実行する必要があります (j = 0,1,2,3,4 の場合)。合計で、内側のループは 55 回実行する必要があります。これは、num変数が 55 を保持することを意味します。

于 2013-09-28T18:16:58.840 に答える
0

console.log(i + " " + j + " " + num);の前に、内側のループの中に入れますif

知っておくべきことはすべて表示されます。

于 2013-09-28T18:20:16.260 に答える
0

最も外側のループが繰り返されるたびにi、1 ずつ増加しnum、10 ずつ増加します (内側のループの内側にあり、最も外側のループの反復ごとに 10 回反復するため、num10 回増加します)。6 回目の繰り返しに到達するiと 5 になり、j0 になります。内側のループは 5 回繰り返され、これにより 5jになります。今までnumは 55 になりました。次の繰り返しでは、if 制御が成功し、実際i == 5 && j == 5には、最も外側のループを破り、そしてif 条件の後にステートメントが配置さnumているため、この 56 回目の繰り返しは完了せず、56 回まで増加しません。しかし、繰り返しは約 55 + 1/2 です。num++num

j最も外側の反復ごとにリセットされるのはなぜですか? ループ内にスコープが設定されているため、最も外側の反復ごとに破棄され、再度作成されます。

于 2013-09-28T18:20:38.747 に答える