矩阵行列式的递归

时间:2018-02-02 03:06:41

标签: java algorithm recursion matrix

我正在努力在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;
}

0 个答案:

没有答案