黑马程序员技术交流社区

标题: 给一个数组,让你输出所有可能的组合 [打印本页]

作者: 可见    时间: 2012-3-9 14:31
标题: 给一个数组,让你输出所有可能的组合
例如{1,2}可以输出1,2,12,21 我看不太懂答案代码的思想,求解释
答案代码如下:
public class A {       
        public static void main(String args[]){
        String[] array = new String[]{"1","2","3","4"};
                listall(Arrays.asList(array),"");
        }
        public static void listall(java.util.List<String> list,String prefix){
                System.out.println(prefix);
                for(int i = 0 ; i < list.size();i++)
                {
                        List temp = new LinkedList(list);
                        listall(temp,prefix+temp.remove(i));
                }
        }
}

用的递归,本人看的不太明白,求高人指点,说明白他的思路就好了。
作者: djx900    时间: 2012-3-9 14:37
本帖最后由 djx900 于 2012-3-9 14:54 编辑

递归就是函数体内 调用函数自身~    我也看不到 你代码 传的参数 比如  tenp  list 还有调用函数 里的参数,来 告诉 也给我指点下啊
作者: 泮和顺    时间: 2012-3-9 16:18
基本思路就是用工具类方法列出有顺序的各个LIST集合即Arrays.asList(array)
然后用循环加递归的形式不停的remove()方法去获取子集。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2