我一直在學習LUA似乎並不能作簡單的實現這個二叉樹的工作......LUA不修改函數參數
function createTree(tree, max)
if max > 0 then
tree = {data = max, left = {}, right = {}}
createTree(tree.left, max - 1)
createTree(tree.right, max - 1)
end
end
function printTree(tree)
if tree then
print(tree.data)
printTree(tree.left)
printTree(tree.right)
end
end
tree = {}
createTree(tree, 3)
printTree(tree)
程序剛剛執行後返回零。我在網上搜索瞭解如何在lua中傳遞參數(如果是通過引用或通過值),並發現某些類型通過引用(如表和函數)傳遞,而其他類型則通過值傳遞。儘管如此,我在將全局變量「tree」傳遞給「createTree」函數之前創建了一個表格,爲了同樣的目的,我甚至將「left」和「right」初始化爲「createTree」中的空表格。我究竟做錯了什麼?
你的回答非常明確,讓我明白我的錯誤。基本上,我的誤解是REFERENCE中傳遞了「對象」變量(比如字符串和表),但是現在我明白它們是由指針表示並且通過值傳遞的。這使得函數可以改變它所指向的數據,但不是指針本身的地址(例如,如果我理解正確的話,通過值傳遞指針到C/C++函數)。其他答案使我接近這個結論,但它是你的,摧毀了所有的疑惑。謝謝 :) – Dincio