返回更多函数的函数导致无限循环

大家好,我刚刚开始学习 Lua,不小心造成了一个我不太明白的无限循环,所以想知道你们能否解释一下这里发生了什么,谢谢。 : D

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

然后当输入 test(2) 时,它将无限循环2次直到停止。 任何解释都是受欢迎的,谢谢。 : D

点赞
用户2879085
用户2879085

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

第二个测试调用(+ test(x))实际上永远不会被执行。但是,由于不管您传递什么值,test()都不会实际返回任何东西,因此它实际上会崩溃,因为在 Lua 中计算nil+nil是非法的。

2018-08-03 13:07:53