Java,递归反转一个数组

新手上路,请多包涵

我还没有找到任何符合我的功能的特定需求来执行此操作,是的,它是为了作业。

所以我有:

 public void reverseArray(int[] x) {

}

前提条件:x.length > 0

事实上,我不能让函数返回任何东西,唯一的参数是一个数组,这让我很困惑。

我试过将循环与递归一起使用,但我尝试过的一切似乎都以正在制作的函数的无限实例结束。

我有一个想法/建议与这个函数一起使用另一个函数,但是,目前如何递归地使用原始函数超出了我的范围。

任何帮助表示赞赏。

原文由 user1787213 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 458
2 个回答

如果我对此进行编码,我会为递归调用创建一个临时数组(可能删除一个元素?),并在从函数返回之前将元素复制回原始数组。您还需要找到一个基本案例来终止递归。

原文由 Code-Apprentice 发布,翻译遵循 CC BY-SA 3.0 许可协议

void reverseArray(int[] x){
   reverse(x, 0, x.length -1);
}

void reverse(int[] x, int i, int j){
    if(i<j){//Swap
       int tmp = x[i];
       x[i] = x[j];
       x[j] = tmp;
       reverse(x, ++i, --j);//Recursive
    }
}

测试:

 int[] s = new int[]{1,2,3,4,5};
reverseArray(s);
System.out.println(Arrays.toString(s));//"5,4,3,2,1"

递归,O(n),不需要临时数组。

原文由 Stackoverflow 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏