mam taki program:
double det(int n, int w, int * WK, double ** A)
{
int i,j,k,m, * KK;
double s;
if(n == 1) // sprawdzamy warunek zakończenia rekurencji
return A[w][WK[0]]; // macierz 1 x 1, wyznacznik równy elementowi
else
{
KK = new int[n - 1]; // tworzymy dynamiczny wektor kolumn
s = 0; // zerujemy wartość rozwinięcia
m = 1; // początkowy mnożnik
for(i = 0; i < n; i++) // pętla obliczająca rozwinięcie
{
k = 0; // tworzymy wektor kolumn dla rekurencji
for(j = 0; j < n - 1; j++) // ma on o 1 kolumnę mniej niż WK
{
if(k == i) k++; // pomijamy bieżącą kolumnę
KK[j] = WK[k++]; // pozostałe kolumny przenosimy do KK
}
s += m * A[w][WK[i]] * det(n - 1,w + 1, KK, A);
m = -m; // kolejny mnożnik
}
delete [] KK; // usuwamy zbędną już tablicę dynamiczną
return s; // ustalamy wartość funkcji
}
}
chciałbym wiedzieć jak działa ten program. Oczywiście mamy rekurencję i przypadek łatwy to gdy macierz ma wymiar jeden i to mamy w ifie.
Dalej w elsie już nie za bardzo wiem co się dzieje, zatem proszę o pomoc.