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所有元素均为最后一个元素,想了很久不得其解。后来忽然明白了,原来是一个传值,传引用的问题,呵呵