我很惊讶为什么下面的算法告诉我,那个矩阵不可逆,我有输入单位矩阵,这里是我的计算teterminant的代码
float determinant(float a[5][5],float k)
{
float s=1,det=0,b[5][5];
int i,j,m,n,c;
if(k==1){
return (a[0][0]);
}
else
{
det=0;
for(c=0;c<k;c++)
m=0;
n=0;
for(i=0;i<k;i++)
{
for(j=0;j<k;j++){
b[i][j]=0;
if(i!=0 && j!=c)
{
b[m][n]=a[i][j];
if(n<(k-2))
n=n+1;
else{
n=0;
m++;
}
}
}
}
det=det+s*(a[0][c])*determinant(b,k-1);
s=-1*s;
}
return det;
}
答案 0 :(得分:2)
在尝试修复可怕的格式时,我意识到你可能会错过第一个for
循环(使用c
)的大括号。 Protip:正确格式化你的代码,你不会犯这么简单的错误。