自己用递归写的组合算法遇到的问题

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值