合并函数在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.insertt ,最后返回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中,默认情况下所有变量都是全局变量。

链接地址: http://www.djcxy.com/p/92435.html

上一篇: Merge function in Lua

下一篇: Referenced DLLs not copying to output bin