代码示例将在 Lua 中,但问题相当笼统 - 这只是一个示例。
for k=0,100 do
::again::
local X = math.random(100)
if X <= 30
then
-- do something
else
goto again
end
end
此代码生成 0-30 之间的 100 个伪随机数。它应该在 0-100 之间进行,但如果其中任何一个大于 30,则不会让循环继续。
我尝试在没有 goto 语句的情况下完成这项任务。
for k=0,100 do
local X = 100 -- may be put behind "for", in some cases, the matter is that we need an 'X' variable
while X >= 30 do --IMPORTANT! it's the opposite operation of the "if" condition above!
X = math.random(100)
end
-- do the same "something" as in the condition above
end
相反,该程序运行随机数生成,直到我得到所需的值。一般来说,我把所有的代码都放在了主循环和第一个例子中的条件之间。
从理论上讲,它与第一个示例相同,只是没有goto
s。但是,我不确定。
主要问题:这些程序代码是否相等?他们做同样的事情吗?如果是,哪个更快(=更优化)?如果不是,有什么区别?