我正在尝试编写一种递归方法,该方法采用一个整数数组并将交替的元素复制到两个单独的数组中,直到没有要拆分的元素为止。

例如:

[0 1 2 3 4 5 6 7 8 9]
...

[0 2 4 6 8]
[1 3 5 7 9] /
[0 4 8]
[2 6] /
[0 8]
[4] /
[0]
[8] /
[2]
[6] /
[1 5 9]
[3 7] /
[1 9]
[5] /
[1]
[9] /
[3]
[7]


到目前为止,我已经能够拆分初始数组,但是递归不会终止。有什么建议么?

这是方法的代码:

public static void halve(int[] a, int x)
{
    for (int i = 0; i < x; i = i + 2)
    {
        xList[i/2] = i;
        yList[i/2] = i + 1;
    }

    printList(xList);
    printList(yList);

    if (x-1 > 2)
        halve(xList, xList.length-1);
    else if (x-1 > 2)
        halve(yList, yList.length-1);
}

最佳答案

看来xListyListint[]。在这种情况下,xList.length-1yList.length-1始终返回相同的数字,因此x的参数halve始终大于3,并且递归不会停止。

这更不用说其他问题了,例如:


您正在用索引而不是xList的元素填充yLista
如果i + 1是奇数,则x越界。
ifelse if的条件相同-您肯定意味着其他含义。

09-28 01:18