感覺就長的很像det
就當作是在算行列式...
det
判斷 大於2 --> 降階(遞迴再判斷)
小於2 --> return 對角線相乘再相減
mat 表示對第( 1,j ) 列降階後的矩陣
複製程式
public class test{
public static void main(String[] args)
{
int[][] a={{0,0,1,-1,2},{1,0,-3,2,1},{5,2,1,1,0},{0,1,4,2,0},{0,0,2,1,-2}};
System.out.print(det(a));
}
public static int det(int a[][])
{
int n = a.length;
int det=0;
if(n>2){
int sign=-1;
for(int i=0;i<n;i++){
sign=sign*-1;
det=det+a[0][i]*det(mat(a,n-1,i))*sign;
}
}else{
return a[0][0]*a[1][1]-a[0][1]*a[1][0];
}
return det;
}
public static int[][] mat(int a[][],int n,int j)
{
int b[][] = new int[n][n];
int bm,bn;
//System.out.println("-----------");
for(bm=0;bm<n;bm++){
for(bn=0;bn<n;bn++){
if(bn>=j)
b[bm][bn]=a[bm+1][bn+1];
else
b[bm][bn]=a[bm+1][bn];
// System.out.print(b[bm][bn]);
}
// System.out.println("");
}
return b;
}
}
不保證正確...自己try幾組看看....