自分で再帰的に書く組合せアルゴリズムで出会った問題
public List zuhe(char[] c, int num) {
List list = new ArrayList();
char[] cc = new char[num];
zuhe(0, num, 0, c, cc,list);
return list;
}
private void zuhe(int ii, int num, int n, char[] c, char[] cc, List list) {
for (int i = ii; i < c.length + 1 - num; i++) {
if (num == 1) {
cc[n] = c[i];
System.out.print(cc);
list.add(new String(cc));
//list.add(cc);
//list.add(cc.clone());
System.out.print(" ");
} else {
cc[n] = c[i];
zuhe(i + 1, num - 1, n + 1, c, cc, list);
}
}
}
アルゴリズムのlist.add(new String(cc))をlist.に変更add(cc)ではlistのすべての要素が最後の要素であり,長い間考えていたが解けなかった.それから突然分かって、もとは1つの伝値で、伝引用の問題、ほほほ