2016-04-04 7 views
-1

これは、 int [] Y)をパラメータとして、X []の左端のn個の要素をY []の右端のn個の位置に逆順にコピーします。ある配列の一番左のn要素を別の配列の右端の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(); 
    } 
} 
+1

ようこそ。 reverseArray1を[1、2、3、4]のint配列と3のnで呼び出すテストメソッドを書くのと同じようにもう少し追加できますか?そして、結果を印刷して、あなたが期待したことを言うかもしれませんか? – rajah9

答えて

0

この再帰を使用するとかなりシンプルでなければなりません:

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

さらに、indexOutOfBou ndsケース、例えば。 n > right.length(またはleft.length)の場合。基本的には次のようなものです:

if (n > left.length || n > right.length) 
    n = Math.min(left.length, right.length); 
+0

ありがとうございます。あなたはちょうど私が正しい道にいたことを私に安心させました! – HPotter

+0

@HPotter問題が解決しても問題が解決しない場合は、**受け入れ**とマークして、あなたの*質問に答えていることを確認してください*、ありがとう – radoh

関連する問題