2012-10-25 126 views
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循環也會繼續重複。

+3

您看到您正在將外部循環中的j重新初始化爲1? –

+0

在第4行中,您將i的每次迭代中的j的值重置爲1。 – JerseyMike

回答

2

那是因爲。您正在將外部while循環中的j重新初始化爲1。所以,每當你的外循環開始時,你的內循環將運行兩次。

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 
+0

謝謝。解決了。 – SeesSound

+0

我需要等待11分鐘 – SeesSound

+0

@ user1716168。是啊。你可以在那之後做。通常情況下,假定至少需要10 - 15分鐘才能解決問題。那是爲什麼那個時候。 –

0

這是最好的使用跟蹤表

1)所有的變量和條件,沿頂

2)每一個變量/條件變化,你去一次奠定了的解釋排下來,並輸入到表

enter image description here

1號線:i初始化爲1

線路2:條件I < = 3爲真,從而添加到跟蹤表中的一行向下

第3行:while循環運行,直到Ĵj被初始化爲1

線4-8內< 3成爲假

發生什麼事是out while循環運行一次,在其上遇到另一個縮進while循環,在我下一次增加之前必須運行其循環。

算法複雜性的一個副作用或有趣的一點是內部while循環將運行外部while循環運行的次數。這是按照N * N的順序。你可以從真值表中看出這是真的。在第三次迭代之前,當j停止時,內部while會運行三次(實際上不是n次,但是N-1)。