函数返回更多函数,创建无限循环

时间:2018-08-03 13:04:45

标签: lua infinite-loop

伙计们,我刚开始学习Lua,我不小心弄了一个我不太了解的无限循环,所以我想知道你们是否可以解释一下这里发生的事情,谢谢。 :D

function test(x) 
print (x)
return test(x) + test(x)
end

然后,当输入test(2)时,它将无限循环2次,直到停止为止。 任何解释表示赞赏,谢谢。 :D

1 个答案:

答案 0 :(得分:1)

这称为递归。您的函数在返回之前会自行调用。在达到一定深度的递归之后,大多数语言都会出现诸如堆栈溢出之类的问题。因此,它很可能实际上不是无限的。

第二个测试调用(+ test(x))永远不会真正到达。但是由于test()实际上不会返回除nil之外的任何值,无论您传递什么值,它实际上都会崩溃,因为在Lua中计算nil+nil是非法的。