Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将一个数组中最左边的n个元素按相反顺序复制到另一个数组中最右边的n个位置_Java_Arrays_Recursion_Data Structures - Fatal编程技术网

Java 如何将一个数组中最左边的n个元素按相反顺序复制到另一个数组中最右边的n个位置

Java 如何将一个数组中最左边的n个元素按相反顺序复制到另一个数组中最右边的n个位置,java,arrays,recursion,data-structures,Java,Arrays,Recursion,Data Structures,所以我一直在尝试提出一个函数,它接受a(int[]X,int n,int[]Y)作为参数,并以相反的顺序将X[]中最左边的n个元素复制到Y[]中最右边的n个位置 到目前为止,我已经创建了一个单独的函数,用于打印a中最左边的n元素的反转 public static void reverseArray1(int[] A, int n) { if(n > 0) { System.out.print(A[n-1] + " "); reverseArray1(A, n-1); }

所以我一直在尝试提出一个函数,它接受a(int[]X,int n,int[]Y)作为参数,并以相反的顺序将X[]中最左边的n个元素复制到Y[]中最右边的n个位置

到目前为止,我已经创建了一个单独的函数,用于打印a中最左边的n元素的反转

public static void reverseArray1(int[] A, int n) {
if(n > 0) {
   System.out.print(A[n-1] + " ");
   reverseArray1(A, n-1);
   }
}
这是我目前的计划:

class Recursion {
static void reverseArray1(int[] X, int n, int[] Y) {
//This is where I'm stuck

}

public static void main(String[] args) {
   int[] A = {-1, 2, 3, 12, 9, 2, -5, -2, 8, 5, 7};
   int[] B = new int[A.length];

   for(int x: A) System.out.print(x+" ");
   System.out.println();

   reverseArray1(A, A.length, B);
   for(int x: B) System.out.print(x+" ");
   System.out.println();
   }
}

使用递归应该非常简单:

void copyNFromLeft(int[] left, int n, int[] right) {
    if (n < 1)
        return;
    right[right.length - n] = left[n - 1];
    copyNFromLeft(left, n - 1, right);
}

欢迎来到SO。您是否可以再添加一点,比如编写一个测试方法,用int数组[1,2,3,4]和n值3调用reverseArray1?也许打印结果并说出你的期望?谢谢。你刚刚向我保证我走对了路@没有问题,如果一个答案帮助你解决问题,考虑把它标记为被接受,以清楚地表明你的问题得到了回答,谢谢。
if (n > left.length || n > right.length)
    n = Math.min(left.length, right.length);