0

再帰関数のコードを記述する必要があります。この関数は、実際には配列を操作し、その配列を特定の条件に基づいて (たとえば、条件関数 X を使用して) サイズが異なる 2 つの新しい配列に分割します。その後、関数は、配列にそれぞれ 1 つの要素のみが含まれるまで、新しく作成された配列のそれぞれに対して操作を続けます。実際にこれを実行できるコードを教えてください。私は何をする必要があるかについて大まかな考えを与えています。:

recursive_function func1 (array) {
    conditional_function X();
    creates, array1[] and array2[]
    perform the same on each of array1 and array2
    until all arr
}
4

1 に答える 1

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;
    }
}
于 2013-01-16T10:36:50.097 に答える