Неважно, если длина входных строк одинакова или нет, и это учитывается базовым случаем рекурсии.
if (m == 0 || n == 0)
return 0;
Если мы достигнем конца любогоодна из строк, рекурсия останавливается и раскручивается оттуда.
Также пример, который вы упомянули в комментарии:
ABCEFG
и ABXDE
Сначала мы сравниваем последний символ из обоихстрока. В этом случае они не одинаковы.
Итак, мы попробуем два случая:
- Удалить последний символ из первой строки и сравнить его со вторым.
- Удалить последний символ из второй строки и сравнить его с первым.
И вернуть максимум из обоих случаев.
(В качестве примечания, если последнийсовпадение символа, мы добавили бы 1 к нашему ответу и удалили последний символ из обеих строк)
Этот процесс продолжается до тех пор, пока какая-либо строка не достигнет своего конца, и в этом случае базовый случай вашей рекурсии будет выполнени рекурсия возвращается.
Так что не имеет значения, одинакова ли исходная длина строки.