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