我已经制作了这么遥远

function lcs(xstr, ystr)
        if xstr:len() == 0 or ystr:len() == 0 then
                return ""
        end
        x = xstr:sub(1,1)
        y = ystr:sub(1,1)
        xs = xstr:sub(2)
        ys = ystr:sub(2)
        if x == y then
                return x .. lcs(xs, ys)
        else
                l1 = lcs(xstr, ys)
                l2 = lcs(xs, ystr)
                if l1:len() > l2:len() then
                        return l1
                else
                        return l2
                end
        end
end

print(lcs("abcd", "bcd"))
.

不幸的是,它只是按预期打印“D”而不是“BCD”。对我来说,看起来lite“l2= lcs(xs,ystr)”尚未执行,因为如果我在开头添加调试打印它打印函数尚未被称为Wit Arguments“BCD”和“BCD”,但我确信在别人的声明之后的价值是好的。 我会感谢任何帮助。

有帮助吗?

解决方案

您的xs变量是全局的

l1 = lcs(xstr, ys)
l2 = lcs(xs, ystr)
.

第一行损坏二线使用的生成古代码码值。
使所有临时变量(x,y,xs,ys,l1,l2)本地。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top