在这个递归调用中,本地变量会发生什么?

在一个复杂的代码中,我发现了一个奇怪的行为:显然 Lua 并不像 C 和 Java 一样处理局部变量 (我不惊讶但我也不知道它是怎样处理的!)

我阅读了 PILLua-users.org 但两篇文章都没有提到递归中局部变量的情况。这导致我开发了以下测试代码:

function addN(n)
    local ret=""
    if n>0 then
        ret=ret..addN(n-1)
        print("for n="..n.." ret='"..ret.."'")
    else
        print("n reached 0")
    end
    return ret
end

print("Final result='"..addN(9).."'")

预期结果:

Final result='987654321'

但我得到的结果是:

Final result=''

为什么? 我怎样才能得到预期结果?

原文链接 https://stackoverflow.com/questions/7528476

点赞
stackoverflow用户714501
stackoverflow用户714501

你实际上没有在任何地方连接 n。尝试以下代码:

ret = tostring(n)..addN(n-1)
2011-09-23 11:52:17