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

为什么最右边的 while 循环会不断重复,即使 j 的值最终已经被它满足了。

4

2 回答 2

2

那是因为。您正在外部 while 循环中重新初始化您的jto 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
于 2012-10-25T16:24:46.923 回答
0

这最好通过使用跟踪表来解释

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 在第三次迭代之前停止。

于 2012-10-25T20:24:51.690 回答