【发布时间】:2021-08-20 19:54:48
【问题描述】:
我有一个程序正在运行两个递归方法(这些方法添加了二维数组的行和列)。这两种方法都按预期工作,但是我无法让它们在同一个主要方法体中运行。我相信这是因为 rowsum 从未真正终止,因此 colsum 永远没有机会运行。我该如何解决这个问题?
编辑:我还想补充一点,即使代码运行良好,我也会收到以下错误。有什么解释吗?
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("How many rows?: ");
int rows = scan.nextInt();
System.out.println("How many columns?: ");
int cols = scan.nextInt();
int[][] array = new int[rows][cols];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[0].length; j++) {
array[i][j] = (int) Math.floor(Math.random() * 101);
}
}
System.out.println(Arrays.deepToString(array));
rowsum(array, 0);
colsum(array, 0);
}
public static int rowsum(int array[][], int column) {
int sum = 0;
for (int i = 0; i < array.length; i++) {
sum += array[column][i];
}
System.out.print("Sum of row " + column + ": " + sum + " | ");
if (column >= array[0].length) {
return 0;
} else {
return rowsum(array, column + 1);
}
}
public static int colsum(int array[][], int row) {
int sum = 0;
for (int i = 0; i < array[0].length; i++) {
sum += array[i][row];
}
System.out.print("Sum of column " + row + ": " + sum + " | ");
if (row >= array.length) {
return 0;
} else {
return colsum(array, row + 1);
}
}
【问题讨论】:
-
我不确定您的方法打算如何阅读您的代码。因此,请澄清“他们按预期工作”的意思,也许告诉我们您认为他们“应该做什么”。对我来说,阅读您的代码,他们只是为每个自然数求和。
-
我在上面说过,这些方法对二维数组的行和列求和。
-
这些方法不符合预期,否则您将不会得到您所显示的异常。
标签: java recursion multidimensional-array