Я делаю правку-расстояние между двумя строками. Использует рекурсивную функцию. Онлайновые компиляторы компилируют код и дают мне вывод 3, что правильно, но Visual Studio говорит: «Слишком мало аргументов в вызове функции». Может, кто-то еще поможет?
Я посмотрел на другие потоки, и они действительно пропустили аргументы, но я этого не делаю, но VS помечает мой рекурсивный вызов
#include<iostream>
#include<string>
using namespace std;
int min(int x, int y, int z)
{
return min(min(x, y), z); // here VS flags error
}
int editDist(string str1, string str2, int m, int n)
{
if (m == 0) return n;
if (n == 0) return m;
if (str1[m - 1] == str2[n - 1])
return editDist(str1, str2, m - 1, n - 1);
return 1 + min(editDist(str1, str2, m, n - 1),
editDist(str1, str2, m - 1, n),
editDist(str1, str2, m - 1, n - 1)
);
}
int main()
{
string str1 = "sunday";
string str2 = "saturday";
cout << editDist(str1, str2, str1.length(), str2.length());
return 0;
}