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)のブレースが欠落していることに気付きました。ヒント:コードを適切にフォーマットすれば、このような単純なエラーは発生しません。

于 2012-08-27T11:17:44.497 に答える