作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有一种方法可以使用递归来填充数组,而不实现方法重载?我想构建一个只接受 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/
我是一名优秀的程序员,十分优秀!