java - 使用递归来填充数组,而不实现方法重载?

标签 java arrays recursion overloading

有没有一种方法可以使用递归来填充数组,而不实现方法重载?我想构建一个只接受 int 作为参数并返回一个数组的方法。我想到的唯一解决方案是使用方法重载;以 int 作为参数的函数构建数组,并将数组和 int 传递给第二个函数,第二个函数以 int 和数组作为参数并实现实际的递归。

这是一个例子:

public static int[] recursiveBuilder(int depth, int[] anArray){
    // Base case:
    if (depth < 0){
        return anArray;
    }
    // Recursion:
    else{
        anArray[depth] = depth;
        depth--;
        return recursiveBuilder(depth, anArray);
    }
}

public static int[] recursiveBuilder(int depth){
    return recursiveBuilder(depth, new int[depth + 1]);
}

如果我在重载的递归部分声明数组,则每次调用递归时都会初始化数组,因此我使用了第二个函数来声明数组。

这种方法被认为是好的吗?高效的?有没有办法只用一种方法来实现这种动态?

最佳答案

通常,递归解决方案需要两种方法。使用外部有意义的参数调用 top 方法,执行任何所需的设置,并调用递归方法。递归方法需要额外的参数。

例如,递归二分搜索可能有一个 top 方法,该方法仅将探针和对数组的引用作为参数。递归方法还需要一个开始和结束索引,以便它可以将自己限制为数组的一个切片。

Java 程序通常有很多小方法,Java 实现就是为了处理这些小方法而设计的。如果您可以使代码清晰并使用两种方法,请使用两种方法并继续下一步。

关于java - 使用递归来填充数组,而不实现方法重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18564737/

相关文章:

java - 如何在 xml 文件中查找 ID?

java - @Range 在 spring mvc 中不起作用

java - 七月到 SLF4J 桥

java - 如何使 curl 在基于 Docker 镜像的 java :8-jdk-alpine and keep the image clean? 中可用

java - 使用JAVA形成测试数据列表进行selenium功能测试

javascript - 如何获取json文件的主结构?

javascript - 很难理解回调函数

java - 如何使用递归将元素从数组一复制到数组二?

javascript - 奇怪的递归无限循环我无法追踪

具有递归调用的Python生成器