gpt4 book ai didi

java - 递归地替换二维数组中的内部数组

转载 作者:行者123 更新时间:2023-11-29 04:14:14 24 4
gpt4 key购买 nike

我想递归循环一个二维数组,每次都替换一个内部数组。问题是似乎没有创建数组。尝试访问数组中的值会使 java 提示所使用的索引越界。

如何使用递归替换二维数组中的内部数组?

我必须动态替换数组,因为我希望二维数组参差不齐。每个索引应包含一个数组,其长度等于其索引号 + 1。

我如何调用我的方法:

double[][] personArr = new double[5][];
personArr = personArrCreator(personArr, 0);

我的方法:

/**
* Creates a ragged, pyramid-shaped, 2d array
* @param pArr The blank 2d Array to fill out
* @param num Controls the base case.
* @return double[][] The finished 2d array
*/
private static double[][] personArrCreator(double[][] pArr, int num) {
pArr[num] = new double[num];

if (num == 4) {
return pArr;
}

personArrCreator(pArr, num + 1);
return null; // never called
}

最佳答案

return null; // never called

这实际上被调用了,因为一旦达到基本情况,所有其他方法都将返回 null。相反,您想通过解析递归调用返回给 Array 的内容来返回方法的结果:

return personArrCreator(pArr, num + 1);

哪个会返回:

[[], [0.0], [0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]]

这将返回一个大小为零的 Array。我不认为这是你想要的。相反,您可以将大小初始化为 num + 1 来解决此问题:

private static double[][] personArrCreator(double[][] pArr, int num) {
pArr[num] = new double[num + 1];
if (num == 4) {
return pArr;
}
return personArrCreator(pArr, num + 1);
}

生成数组:

[[0.0], [0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]]

关于java - 递归地替换二维数组中的内部数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53366034/

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