1
在一个复杂的代码,我发现了一个奇怪的现象:显然的Lua不把局部变量相同,C和Java(我并不感到惊讶,但我不知道如何对待他们呢!)这个递归调用中的局部变量会发生什么?
我读PIL和Lua-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=''
为什么?我怎样才能达到预期的结果?
或更简单的'ret = n..addN(n-1)'。 ret毕竟是“”... – Bahbar
@Bahbar好的电话,谢谢:-) – cnicutar