Нам дана следующая задача:
"Учитывая два слова word1 и word2, найдите минимальное количество шагов, необходимых для того, чтобы слова1 и word2 были одинаковыми, где на каждом шаге вы можете удалить один символ в любом string. "
Пример 1:
Ввод:" sea "," eat "
Ввод: 2
Объяснение: Вам нужно сделать один шаг «море» к «еа» и еще один шаг к «еде» к «еа».
Рекурсия для решения этой проблемы заключается в Java:
public class Solution {
public int minDistance(String s1, String s2) {
return s1.length() + s2.length() - 2 * lcs(s1, s2, s1.length(), s2.length());
}
public int lcs(String s1, String s2, int m, int n) {
if (m == 0 || n == 0)
return 0;
if (s1.charAt(m - 1) == s2.charAt(n - 1))
return 1 + lcs(s1, s2, m - 1, n - 1);
else
return Math.max(lcs(s1, s2, m, n - 1), lcs(s1, s2, m - 1, n));
}
}
Вопрос Я имею в виду, может ли индукция использоваться здесь, чтобы доказать, что эта рекурсия даст ответ, который мы ищем? если так, как я могу это сделать, так как это не математическое уравнение?