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));
}