伙计们,我刚开始学习Lua,我不小心弄了一个我不太了解的无限循环,所以我想知道你们是否可以解释一下这里发生的事情,谢谢。 :D
function test(x)
print (x)
return test(x) + test(x)
end
然后,当输入test(2)时,它将无限循环2次,直到停止为止。 任何解释表示赞赏,谢谢。 :D
答案 0 :(得分:1)
这称为递归。您的函数在返回之前会自行调用。在达到一定深度的递归之后,大多数语言都会出现诸如堆栈溢出之类的问题。因此,它很可能实际上不是无限的。
第二个测试调用(+ test(x)
)永远不会真正到达。但是由于test()实际上不会返回除nil
之外的任何值,无论您传递什么值,它实际上都会崩溃,因为在Lua中计算nil+nil
是非法的。