double det(int n, double *res, double A[][n]) {
int i, j, k, l, m, mult;
double B[n - 1][n - 1];
if (n == 1)
return *res += A[0][0];
else {
for (i = 0; i < n; ++i) { /*rozwinięcie Laplace'a zawsze względem 1 kolumny*/
if (i % 2)
mult = 1;
else
mult = -1;
l = 0;
for (j = 0; j < n - 1; ++j) { /*B - podmacierz powstała z wykreślenia 1 kolumny i i-tego wiersza*/
m = 1;
if (l == i)
++l;
for (k = 0; k < n - 1; ++k) {
B[j][k] = A[l][m];
++m;
}
++l;
}
return *res += A[i][0] * mult * det(n - 1, res, B);
}
}
}
Mam problem z powyższym kodem, w zamierzeniu miał on obliczać wyznacznik korzystając z rozwinięcia Laplace'a, ale wynik, który otrzymuję dla n > 2 jest błędny. Byłbym bardzo wdzięczny jeśli ktoś wskazałby mi błąd w rozumowaniu, męczę się już z tym kodem jakiś czas.