黑马程序员技术交流社区
标题:
递归些不明白,代码中list2.addAll(list1);作用?请详细解释下
[打印本页]
作者:
杜黎明
时间:
2015-6-3 21:56
标题:
递归些不明白,代码中list2.addAll(list1);作用?请详细解释下
import java.util.ArrayList;
import java.util.List;
/*
* 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
* 原始字符串是"abc",打印得到下列所有组合情况:
* "a" "b" "c"
* "ab" "bc" "ca" "ba" "cb" "ac"
* "abc" "acb" "bac" "bca" "cab" "cba"
**/
public class Test
{
static String strl="abc";//静态随类的加载而加载,后面可以直接调用
static char[] Arr=strl.toCharArray();//将字符串转换成数组
public static void main(String[] args)
{
List<Integer> list1 = new ArrayList<Integer>();
for(int j=1;j<=Arr.length;j++)//按字符串的个数分行输出
{
get("",list1,j);//调用获取字符串的方法
System.out.println();
}
}
public static void get(String s,List<Integer> list1,int j)
{
if(j == 0)//当一个字符串要输出的个数为0时结束此字符串输出
{
System.out.print("\""+s+"\" ");
return;
}
List<Integer> list2;
for(int i=0;i<Arr.length;i++)
{
list2 = new ArrayList<Integer>();
list2.addAll(list1);
if(!list1.contains(i)) //将list1中不含的元素添加到list2
{
String str = s + Arr[i];
list2.add(i);
get(str,list2,j-1);//采用递归调用方法
}
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2