문제

나는 지금까지 이것을 지금까지 만들었습니다

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"가 아닌 "D"를 인쇄합니다.나를 위해 "L2= LCS (XS, YSTR)"라인이 실행되지 않는 것처럼 보입니다. 처음에는 디버그 인쇄를 추가하면 FIT 인수 "BCD"및 "BCD"라고 불리지 않은 인쇄물을 인쇄합니다.그러나 나는 다른 문장의 시작 후에 가치가 괜찮을 것입니다. 어떤 도움을 주셔서 감사합니다.

도움이 되었습니까?

해결책

xs 변수는 전역

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

첫 번째 줄이 두 번째 줄에서 사용되는 xs 값을 손상시킵니다.
임시 변수 (x, y, xs, ys, l1, l2) 로컬로 인정하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top