我正在努力在java中创建一个Matrix类,而我剩下要做的就是为行列式和反函数添加一个函数。我在查看各种来源之前和之后都没有使用递归,我仍然在努力将其实现到我的算法中。我想自己编写算法而不使用来自互联网的代码,但是当我看看他们如何在算法中实现递归时,我仍然不了解如何将它添加到我的算法中。
public double determinent() {
if(isSquareMatrix(this)) {
if(row > 2) {
for(int r = 0; r < 1; r++) {
for(int c = 0; c < col; c++) {
double[][] m = new double[row-1][col-1];
int tr = 0;
int tc = 0;
for(int rm1 = 0; rm1 < row; rm1++) {
for(int cm1 = 0; cm1 < col; cm1++) {
if(rm1 != 0 && cm1 != c) {
m[tr][tc++] = matrix[rm1][cm1];
}
}
if(rm1 != 0) {
tr++;
}
tc = 0;
}
Matrix m1 = new Matrix(m);
double scalar = matrix[r][c];
double sign = r+c % 2 == 0 ? 1 : -1; // add or subtract
m1 = m1.multiplyByScalar(sign * scalar);
m1.determinent(0);
}
}
} else {
// This is where recursion would occur
return matrix[0][0]*matrix[1][1] - matrix[0][1] * matrix[1];
}
} else {
throw new SizeDoesntMatchException("Error: Not a square matrix");
}
return 0;
}