数学排列的一种递归实现

public static List<List<Integer>> combine(List<Integer> src){

        if(src.size()==1){

            List<List<Integer>> temp=new ArrayList<List<Integer>>();
            temp.add(src);
            return temp;

        }else {

            List<List<Integer>> temp = new ArrayList<List<Integer>>();
            for (int i = 0; i < src.size(); i++) {
                int cur = src.get(i);
                List<List<Integer>> combine = combine(delIndex(src, i));//递归
                for (List<Integer> curList : combine) {
                    curList.add(cur);
                    temp.add(curList);
                }
            }
            return temp;
        }

    }

    /** * 删除下标为count的数,组成新list * @param src * @param count */
    public static List<Integer> delIndex(List<Integer> src,int count){
        List<Integer> temp=new ArrayList<Integer>();
        for(int i=0;i<src.size();i++){
            if(i==count){
                continue;
            }
            temp.add(src.get(i));
        }
        return temp;

    }
点赞