gpt4 book ai didi

java - 如何在Java中递归计算二维数组列

转载 作者:行者123 更新时间:2023-12-02 09:04:24 26 4
gpt4 key购买 nike

我被一个相当愚蠢的家庭作业问题困住了。

任务是找到二维数组上最小的列和并返回它的索引。不允许循环,只能递归。

我管理了代码,但我仍坚持计算列本身的简单任务。

这是我到目前为止编写的代码:

public static int maxSumCol(int[][] a) {
int maxCol=calculateCol(a, 0, 0);
int colIndex=0;
return maxSumCol(a, 0, 0, maxCol, colIndex);
}
private static int maxSumCol(int[][] a, int i, int j, int maxCol, int colIndex) {
if (j<a.length){
int tempCol=calculateCol(a, i, j);
if (tempCol > maxCol)
colIndex=j;
return maxSumCol(a, i, j+1, maxCol, colIndex);
}
return colIndex;
}

这是我构建的用于计算列总和的方法:

   private static int calculateCol(int[][] a, int row, int col){
if (row<=a.length-1)
return a[row][col] + calculateCol(a, row+1, col);
return 0;
}

不幸的是,每次运行代码时我都会收到ArrayIndexOutOfBoundsException

我不知道我的错误在哪里。

最佳答案

从你的帖子中我可以看到,有两个问题。

首先,当您计算列的总和时,您仅检查列索引是否小于外部矩阵的长度,但这是行数,而不是列数。

if (j<a.length){
int tempCol=calculateCol(a, i, j);

第二个是,当您发现一列的总和大于您之前存储的总和时,您只更新 colIndex,而不更新存储总和实际值的 maxcol 变量

if (tempCol > maxCol)
colIndex=j;

关于java - 如何在Java中递归计算二维数组列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59932233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com