0

我很惊讶为什么下面的算法告诉我,那个矩阵是不可逆的,我有输入单位矩阵,这是我的计算行列式的代码

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;
}
4

1 回答 1

2

在尝试修复您可怕的格式时,我意识到您可能缺少第一个for循环的大括号(带有c)。Protip:正确格式化您的代码,并且您不会犯如此简单的错误。

于 2012-08-27T11:17:44.497 回答