أطول خطأ فرعي شائع
-
23-12-2019 - |
سؤال
لقد فعلت هذا حتى الآن
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)" لم يتم تنفيذه لأنه إذا أضفت تصحيح الأخطاء في البداية، فإنه يطبع هذه الوظيفة لم يتم استدعاؤها باستخدام الوسائط "bcd" و"bcd"، لكنني متأكد من أن القيم على ما يرام بعد بداية عبارة else.وسأكون ممتنا أي مساعدة.
المحلول
لك xs
المتغير عالمي
l1 = lcs(xstr, ys)
l2 = lcs(xs, ystr)
السطر الأول يفسد xs
القيمة المستخدمة بواسطة السطر الثاني.
اجعل كل متغيراتك المؤقتة (x، y، xs، ys، l1، l2) محلية.
لا تنتمي إلى StackOverflow