为什么嵌套的for-next循环会给出奇怪的结果?

我对嵌套的for-next循环结果感到困惑。我的问题是计算机如何读取这个函数并得出这个结果。我知道它从上到下读取,但这样会得到1、4、2、3、3、2、1的结果。我的结果是错误的,我不明白计算机如何得出正确的结果。

当你有:

for outsideloop = 1, 3, 1 do
print (outsideloop)
end

它会打印出1、2、3。

当你有:

for insideloop = 4, 1, -1 do -- inside loop
print (insideloop)
end

现在当你把insideloop嵌套在outsideloop内部,你会得到:

for outsideloop = 1, 3, 1 do -- outside loop

print (outsideloop)

for insideloop = 4, 1, -1 do -- inside loop

    print (insideloop)
end
end

结果是1、4、3、2、1、2、4、3、2、1、3、4、3、2、1。这最后的结果使我感到困惑。能否有人澄清我的疑惑。

点赞
用户2791719
用户2791719
输出结果是正确的。

01. outsideloop 的第一次迭代开始值为 1
02. 打印 outsideloop,因此会打印 1
03. insideloop 的第一次迭代开始,得到 4
04. 打印 insideloop,因此会打印 4
05. insideloop 的第二次迭代开始,得到 3
06. 打印 insideloop,因此会打印 3
07. insideloop 继续打印 2 和 1
08. outsideloop 的第二次迭代开始值为 2
09. 打印 outsideloop,因此会打印 2
10. insideloop 再次运行,从 4 打印到 1(步骤 3 到 7)
11. outsideloop 的第三次迭代开始
12. 打印 outsideloop,因此会打印 3
13. insideloop 再次运行

希望我可以帮到你!
2014-02-03 02:26:40
用户827263
用户827263

以下是你程序的修改版本,可能会更加清晰。我修改了程序,让内部循环打印的数字进行了缩进。

#!/usr/bin/lua

for outsideloop = 1, 3, 1 do -- 外部循环
    print (outsideloop)
    for insideloop = 4, 1, -1 do -- 内部循环
        print ("", insideloop)
    end 
end

输出结果是:

1
        4
        3
        2
        1
2
        4
        3
        2
        1
3
        4
        3
        2
        1

外部循环打印的数字依次为 123

内部循环打印的数字依次为 4321,而内部循环会执行 3 次,每次对应外部循环的一次迭代。

2014-02-03 02:39:19