Java,递归地反转数组
我还没有找到任何具有我的功能的特定需求来执行此操作,是的,它是用于家庭作业的。
所以我有:
public void reverseArray(int[] x) {
}
前提条件:x.长度 > 0
我不能让函数返回任何东西,唯一的论点是数组,这让我感到困惑。
我尝试过使用循环和递归,但我尝试过的一切似乎最终都会产生无限的函数实例。
我有一个想法/建议使用另一个函数以及这个函数,但是,如何递归使用原始函数目前还超出了我的范围。
任何帮助是值得赞赏的。
我还没有找到任何具有我的功能的特定需求来执行此操作,是的,它是用于家庭作业的。
所以我有:
public void reverseArray(int[] x) {
}
前提条件:x.长度 > 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),不需要临时数组。
如果我正在对此进行编码,我会为递归调用创建一个临时数组(可能删除了一个元素?),并在从函数返回之前将元素复制回原始数组。您还需要找到一个基本情况来终止递归。