我需要为递归函数编写代码,它实际上在一个数组上运行,并将数组分成两个新的数组,基于某些条件的大小不等(比如使用条件函数X)。之后,该函数继续对每个新创建的数组进行操作,直到数组中每个只包含一个元素。你能帮我一个实际上可以做到这一点的代码吗?我正在粗略地了解我需要做什么。 :
recursive_function func1 (array) {
conditional_function X();
creates, array1[] and array2[]
perform the same on each of array1 and array2
until all arr
}
答案 0 :(得分:0)
您可以使用System.arrayCopy执行此操作
例如:
import com.greytip.common.utils.StringUtils;
public class Test {
public static void main(String[] args) {
Object[] array = new Object[11];
for (int i = 0; i < array.length; i++) {
array[i] = i;
}
recursive(array);
}
private static void recursive(Object[] array) {
if (array == null || array.length < 2) {
System.out.println("return: " + StringUtils.join(array));
return;
}
int pos = x(array);
Object[] part1 = new Object[pos];
Object[] part2 = new Object[array.length - pos];
System.out.println("array : " + StringUtils.join(array)
+ ", part1: 0.." + pos + ", part2: " + part1.length + ".."
+ part2.length);
System.arraycopy(array, 0, part1, 0, part1.length);
System.arraycopy(array, part1.length, part2, 0, part2.length);
recursive(part1);
recursive(part2);
}
private static int x(Object[] array) {
return array.length / 2;
}
}