I'm trying to fill an array recursively to get how many vector values are the same, but it's not working and I do not know where the problem is.
-
The matrix is generated from the comparison of 2 strings
If the values between the vector1 [x] and the vector2 [y] are equal to the position matrix [x] [y] gets a value
-
If not, one of the array values is repeated
Here is the code I have:
int rec(char vet1[], char vet2[], int mat[][tam], int x, int y)
{
if(mat[x][y] != NULL ) \ a matriz completa é preenchida com NULL inicialmente, seguida por primeira linha e coluna com 0. Desta forma a recursão pode parar.
{
return mat[x][y];
}
else
{
if(vet1[x] == vet2[y]) \ compara 2 valores de um vetor de char, se forem iguais, preenche a posição da matriz com a posição anterior + 1
{
mat[x][y] = rec(vet1, vet2, mat, x-1, y-1) + 1;
}
else // mas se não forem iguais, repete o maior valor achado anteriormente na matriz
{
mat[x-1][y] = rec(vet1, vet2, mat, x-1, y);
mat[x][y-1] = rec(vet1, vet2, mat, x, y-1);
if(mat[x-1][y] < mat[x][y-1])
{
mat[x][y] = mat[x][y-1];
}
else
{
mat[x][y] = mat[x-1][y];
}
}
}
}