public double determinantRecursive(double[][] matrix) {
        double determinant = 0;
        if (matrix.length > 2) {
            for (int k = 0; k < matrix.length; k++) {
                double[][] innerMatrix = new double[matrix.length - 1][matrix.length - 1];
                /* Määritetään sisempi matriisi */
                for (int i = 0; i < innerMatrix.length; i++) {
                    for (int j = 0; j < innerMatrix[0].length; j++) {
                        if (i < k) {
                            innerMatrix[i][j] = matrix[i][j + 1];
                        } else if (i >= k) {
                            innerMatrix[i][j] = matrix[i + 1][j + 1];
                        }
                    }
                }
                /* Lisätään tai vähennetään tulevasta determinantista käsiteltävällä alkiolla kerrottu sisemmän matriisin determinatti. */
                if (k % 2 == 0) {
                    determinant = determinant + (matrix[k][0] * determinantRecursive(innerMatrix));
                } else if (k % 2 == 1) {
                    determinant = determinant - (matrix[k][0] * determinantRecursive(innerMatrix));
                }
            }
        } else if (matrix.length == 2) {
            determinant = (matrix[0][0] * matrix[1][1] - matrix[1][0] * matrix[0][1]);
        }
        return determinant;
    }