我正在尝试编写一个递归非静态方法,该方法对于每个给定矩阵将返回具有最高总和的行号。我不允许使用静态方法和 for 循环(在我编写的任何方法中)。
我认为解决方案是使用三种方法:
(private) 计算给定行的总和。
(私人)比较行的总和与使用方法#1i
的总和i+1
(公共)检查矩阵是否有多于一行并在行上应用#2 0
。
我觉得我用我解决这个问题的方式把事情复杂化了。如果有人愿意向我建议更好的算法,我会很乐意尝试。
无论如何,我相信我对#1 和#3 没问题。我的问题是#2。我不知道如何设置行号变量:
public class Matrix {
private int[][] _mat;
public Matrix(int sizeRow, int sizeCol) {
_mat = new int[sizeRow][sizeCol];
}
private int maxRow(int row) { //Recursive method #2: comparing sum of i and i+1
int rowNumber;
if (row <= _mat.length) {
if (rowSum(row, 0) > rowSum(row+1,0)) {
rowNumber = row;
return maxRow(row+1);
}
else {
return rowNumber;
}
}
else {
return rowNumber;
}
}
..
public int maxRow() {..} //Recursive method #3
private int rowSum(int i, int j) {..} //Recursive method #1
}
我的问题是 var rowNumber
。它还没有被初始化,如果我要初始化它,它将被设置为0
每次我调用该方法时。
斯蒂芬大帝
慕田峪7331174
相关分类