到目前为止我已经做到了
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”。对我来说,行"l2 = lcs(xs,ystr)“似乎没有被执行,因为如果我在开头添加调试打印,它就不会调用wit参数"bcd”和"bcd",但我确信在after语句开始后值是正常的。我很感谢你的帮助。
发布于 2014-02-27 15:54:53
您的xs变量是全局的
l1 = lcs(xstr, ys)
l2 = lcs(xs, ystr)第一行破坏了第二行使用的xs值。
将所有临时变量(x、y、xs、ys、l1、l2)设置为本地变量。
https://stackoverflow.com/questions/22072939
复制相似问题