public static void main(String[] args) {
    // TODO Auto-generated method stub
    int matriz[][]= {{1,2,3,4,5},{1,2,3,4,55}};

    System.out.println(sumMatriz(matriz, 0, 0));
}

public static int sumMatriz(int [][]matriz, int i, int j) {
    if(i>=matriz.length-1 && j>=matriz[i].length-1) {
        return matriz[i][j];
    }else {
        if(j>=matriz[i].length-1) {
            if(matriz[i][j]%2==0) {
                return matriz[i][j]+sumMatriz(matriz, i+1, 0);
            }else {
                return sumMatriz(matriz, i+1, 0);
            }

        }else {
            if(matriz[i][j]%2==0) {
                return matriz[i][j]+sumMatriz(matriz, i, j+1);
            }else {
                return sumMatriz(matriz, i, j+1);
            }

        }
    }

}

output
67


如果我把return 0;代替return matriz[i][j];放在if(i>=matriz.length-1 && j>=matriz[i].length-1) {内,则不识别矩阵的最后一个元素,并将其他元素相加。如果放return matriz[i][j];总和,则所有对数都包括最后一个元素(损害数)。

不知道会发生什么
谢谢

最佳答案

不确定练习的目的是否是递归编写(如果是这种情况,请忽略我的回答),但是如果目的是求和您的多维矩阵,我会写得有些不同,如下所示:

public static void main(String[] args) {
    Integer matriz[][]= {{1,2,3,4,5},{1,2,3,4,55}};

    System.out.println(sumMatrix(matriz));
}

private static Integer sumMatrix(Integer matrix[][]) {
    return Arrays.asList(matrix)
        .stream()
        .flatMap(i -> Arrays.asList(i).stream())
        .filter(i -> i % 2 == 0)
        .collect(Collectors.summingInt(i -> i));
}

10-08 08:49