我是編程新手,我正在尋找一種方法來查找矩陣的行列式。我在網上發現了這個代碼,但是我很難理解這裏的算法。我對遞歸的基礎沒有任何問題,但繼續和主循環我無法理解。非常感謝任何能向我解釋算法的人。矩陣行列式算法C++
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'中形成未成年人。另外,這是計算行列式的可怕方法。 –
@ user3144334未成年人是一行一列丟棄的矩陣。這裏使用的未成年人都拋棄了第一行,並且拋棄第p列,在將元素從'a'複製到'temp'時,必須跳過它。 –
計算具有超指數複雜度的行列式,做得好......甚至是一個'pow(-1,p)',以便一目瞭然,代碼是多麼的美好...... –