質問

これまで

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)"は実行されていません。ただし、elseステートメントの開始後に値が大丈夫であることを確信しています。 私は助けを感謝します。

役に立ちましたか?

解決

あなたのxs変数はGlobal

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

最初の行は、2行目で使用されるxs値を破損します。
すべての一時的な変数(X、Y、XS、YS、L1、L2)をローカルにします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top