#include<iostream.h>
#include<conio.h>
#include<math.h>
double Det (double a[2][2], int size);
void form(double a[2][2], int c, int size);
double b[2][2];
double Det(double a[2][2], int size) {
if (size==1) {
return a[0][0];
}
else {
double ans = 0.0;
int c;
for (c=0;c<size;c++) {
form(a,c,size);
ans += pow(-1.0,(double)c)*Det(b,size-1);
}
return ans;
}
}
void form(double a[2][2], int c, int size) {
int i,j=0,k,l=0;
for (i=0;i<size;i++) {
for (j=0;j<size;j++) {
if ((i!=0)&&(j!=c)) {
if (l==size-1) {
k++;
l=0;
}
b[k][l]=a[i][j];
l++;
}
}
}
}
int main() {
double mat[2][2] = {{1.0,2.0},{3.0,7.0}};
cout << Det(mat,2);
getch();
return 0 ;
}
我正在用C++編寫程序來計算使用遞歸的矩陣的行列式。我知道有很多更好的算法來做同樣的事情。但是,我被要求實施這一項。作爲一個測試用例,我使用了代碼中指定的矩陣。當我運行這段代碼時,我得到了-4而不是1的答案。我不明白這段代碼有什麼問題。有人可以幫忙嗎?提前致謝。行列式計算錯誤
這是一些瘋狂的縮進。 – chris
'iostream.h'? *你的工具鏈多少歲?* – WhozCraig