【问题标题】:Recursively reverse an array starting from index 0从索引 0 开始递归反转数组
【发布时间】:2020-06-18 22:09:50
【问题描述】:

我需要递归地反转仅传递 2 个参数的数组,但似乎不起作用。这就是我尝试过的

private static void rotate(char[]a, int i){
    if(i==a.length){
        return;
    }else{
        char temp = a[i];
        a[i] = a[a.length - 1 - i];
        a[a.length - 1 - i] = temp;
        rotate(a, i+1);         
    }   
}

如果我通过类似 char[] x = {'a', 'b', 'c'}; 它将打印 cbc 而不是 cba。 怎么了?

【问题讨论】:

  • 您可以打印出每个递归步骤(数组内容)并了解会发生什么。 :-)

标签: java arrays recursion


【解决方案1】:

您的递归退出条件不正确。正确的是
if (i == a.length/2) { return; }

您将元素与数组末尾的相应元素交换。当你到达数组的中间时——所有的工作都完成了。

【讨论】:

    猜你喜欢
    • 2016-12-07
    • 1970-01-01
    • 2013-05-29
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 2014-12-04
    相关资源
    最近更新 更多