2011-09-23 55 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

相關問題