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
为什么最右边的 while 循环会不断重复,即使 j 的值最终已经被它满足了。
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
为什么最右边的 while 循环会不断重复,即使 j 的值最终已经被它满足了。
那是因为。您正在外部 while 循环中重新初始化您的j
to 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
这最好通过使用跟踪表来解释
1)所有变量和条件都沿顶部排列
2)每次变量/条件发生变化时,您向下一行并输入表格
第 1 行: i 被初始化为 1
第 2 行:条件 i <=3 为真,因此将跟踪表向下添加一行
第 3 行: j 初始化为 1
第 4-8 行,内部 while 循环运行直到 j<3 变为 false
发生的事情是 out while 循环运行一次,它遇到另一个缩进的 while 循环,该循环必须在 i 下一次递增之前运行它的过程。
算法复杂性的一个副作用或有趣的一点是,内部 while 循环将运行外部 while 循环运行的次数。这是 N * N 的顺序。您可以从真值表中看到这是正确的。内部 while 运行了三次(实际上不是 n 次,而是 N-1),因为 j 在第三次迭代之前停止。