合并函数在Lua中
嘿,我试图从合并排序在Lua实现合并功能。 我很熟悉算法,但我是Lua的新手。 我不断收到一个“不好的论据#1','插入'(表预期,得到零)”我相信错误指向我的递归调用。 我无法弄清楚,我有一种感觉,这是相当微不足道的。 我只需要一个Lua大师给我一些指导。 谢谢。 这是我的功能:
function merge(l1, l2)
if # l1 == 0 then
return l2
elseif # l2 == 0 then
return l1
else
if l1[1] <= l2[1] then
tmp = l1[1]
table.remove(l1,1)
return table.insert(merge(l1,l2),tmp)
else
tmp = l2[1]
table.remove(l2,1)
return table.insert(merge(l1,l2),tmp)
end
end
end
我不完全确定你想用merge
函数实现什么,但一个明确的问题是table.insert
不返回一个表,它返回nil
。
存储表中合并的结果t
,使用table.insert
上t
,最后返回t
似乎并不像以前那样突破。
function merge(l1, l2)
if #l1 == 0 then
return l2
elseif # l2 == 0 then
return l1
else
if l1[1] <= l2[1] then
local tmp = table.remove(l1, 1)
local t = merge(l1, l2)
table.insert(t, tmp)
return t
else
local tmp = table.remove(l2, 1)
local t = merge(l1, l2)
table.insert(t, tmp)
return t
end
end
end
关于我做过的其他一些修改的说明。 table.remove
返回已删除的元素,因此您不必首先访问该元素,然后将其删除。 我建议使用关键字local
作为变量,因为在Lua中,默认情况下所有变量都是全局变量。