Я новичок в программировании, и я искал способ найти определитель матрицы. Я нашел этот код в Интернете, но у меня возникли проблемы с пониманием алгоритма здесь. У меня нет проблем с базой рекурсии, но у меня проблемы с пониманием продолжения и основного цикла. Большое спасибо всем, кто может объяснить мне алгоритм.
int determ(int a[MAX][MAX],int n) {
int det=0, p, h, k, i, j, temp[MAX][MAX];
if(n==1) {
return a[0][0];
} else if(n==2) {
det=(a[0][0]*a[1][1]-a[0][1]*a[1][0]);
return det;
} else {
for(p=0;p<n;p++) {
h = 0;
k = 0;
for(i=1;i<n;i++) {
for( j=0;j<n;j++) {
if(j==p) {
continue;
}
temp[h][k] = a[i][j];
k++;
if(k==n-1) {
h++;
k = 0;
}
}
}
det=det+a[0][p]*pow(-1,p)*determ(temp,n-1);
}
return det;
}
}
temp
. Кроме того, это ужасный способ вычисления определителя. - person Joker_vD   schedule 19.01.2014p
, вы должны пропустить его при копировании элементов изa
вtemp
. - person Joker_vD   schedule 19.01.2014pow(-1,p)
, чтобы с первого взгляда было видно, насколько хорош код... - person Marc Glisse   schedule 19.01.2014