Нашел данный код, который вычисляет определитель матрицы любого размера через рекурсивный метод:
Но вот в методе det после создания массива B испытываю трудности с пониманием того что происходит в коде. Помогите понять что именно тут происходит, чтобы самому научится писать подобное.
public class Main {
static double det(double A[][]){
int n = A.length;
if(n == 1) return A[0][0];
double ans = 0;
double B[][] = new double[n-1][n-1];
int l = 1;
for(int i = 0; i < n; ++i){
int x = 0, y = 0;
for(int j = 1; j < n; ++j){
for(int k = 0; k < n; ++k){
if(i == k) continue;
B[x][y] = A[j][k];
++y;
if(y == n - 1){
y = 0;
++x;
}
}
}
ans += l * A[0][i] * det(B);
l *= (-1);
}
return ans;
}
public static void main(String[] args) {
double A[][] = {{1,2,5},
{3,4,6},
{3,5,8}
};
System.out.println(det(A));
}
}