自分で再帰的に書く組合せアルゴリズムで出会った問題


   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つの伝値で、伝引用の問題、ほほほ