私はJavaが初めてです(1か月)。以下を実行しようとして失敗しましたが、助けていただければ幸いです。私がしようとしていることは次のとおりです。
Main は int 配列をメソッドperm2に渡します。
perm2(new int[]{1,2,3});
perm2はそれの順列を作成し、ArrayList に追加して返します。
これは私がこれまでに持っているものです。ご覧のとおり、順列を出力するだけです。
問題は、それらを ArrayList に追加して返すことができないことです。
public static void perm2(int[] s) {
int N = s.length;
int[] a = new int[N];
for (int i = 0; i < N; i++) a[i] = s[i];
perm2(a, N);
}
private static void perm2(int[] a, int n) {
if (n == 1) {
System.out.println(Arrays.toString(a));
return;
}
for (int i = 0; i < n; i++) {
swap(a, i, n-1);
perm2(a, n-1);
swap(a, i, n-1);
}
}
private static void swap(int[] a, int i, int j) {
int c;
c = a[i]; a[i] = a[j]; a[j] = c;
}
出力:
[2, 3, 1]
[3, 2, 1]
[3, 1, 2]
[1, 3, 2]
[2, 1, 3]
[1, 2, 3]
で出力したくありませんsysout
。int 配列の ArrayList でそれらを返したいだけです。