2011-09-23 60 views
1

在一个复杂的代码,我发现了一个奇怪的现象:显然的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='' 

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

回答

5

你实际上并没有连接任何地方的n。尝试类似:

ret = tostring(n)..addN(n-1) 
+0

或更简单的'ret = n..addN(n-1)'。 ret毕竟是“”... – Bahbar

+0

@Bahbar好的电话,谢谢:-) – cnicutar

相关问题