0
i= 1
while (i<=3):
    print("i",i)
    j=1
    while (j<3):
        print("j",j)
        j=j+1
    i=i+1
print("Done!")

今、私は疑問に思っていますか?出力が次のようにならない理由: i1 j1 j2 i2 i3

代わりに: i1 j1 j2 i2 j1 j2 i3 j1 j2

j の値が最終的に満たされているにもかかわらず、一番右の while ループが繰り返されるのはなぜですか。

4

2 に答える 2

2

それはだからです。外側の while ループでjto を再初期化しています。1したがって、外側のループが開始するたびに、内側のループが 2 回実行されます。

while (i<=3):
    print("i",i)
    j=1 <-- This re-initializes the value of `j`
    while (j<3):
        print("j",j)
        j=j+1
    i=i+1
于 2012-10-25T16:24:46.923 に答える
0

これは、トレース テーブルの使用によって最もよく説明されます。

1) すべての変数と条件が上部に配置されています

2) 変数/条件が変更されるたびに、1 行下に移動して表に入力します。

ここに画像の説明を入力

1 行目: i は 1 に初期化されます

Line2: 条件 i <=3 が True であるため、トレース テーブルに 1 行下に追加します

3 行目: j は 1 に初期化されます

行 4-8 内側の while ループは、j<3 が false になるまで実行されます

何が起こっているかというと、out while ループが 1 回実行され、そこで別のインデントされた while ループに出会います。このループは、i が次にインクリメントされる前にそのコースを実行する必要があります。

アルゴリズムの複雑さの副作用または興味深い点の 1 つは、外側の while ループが実行される回数だけ内側の while ループが実行されることです。これは N * N の順です。真理値表から、これが正しいことがわかります。j が 3 回目の反復に到達する前に停止するため、内部の while は 3 回 (実際には n 回ではなく、N-1) 実行されます。

于 2012-10-25T20:24:51.690 に答える