我一直在学习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