黑马程序员技术交流社区
标题:
有个递归方法没搞懂 求教
[打印本页]
作者:
清心玉质
时间:
2015-9-21 16:53
标题:
有个递归方法没搞懂 求教
getString()这个递归方法,复制了集合进行移除 再将移除后的集合作为参数传给此方法。我不明白的是 在i=0移除完后怎么还有不空集合传进去呢,还是我哪里理解错了,望高手指教
private static void combinations(String st,String s) {
//将输入的字符串转化为字符数组,并定义集合用于存储字符元素
ArrayList<Character> al =new ArrayList<Character>();
char[] ch = s.toCharArray();
//遍历字符数组,并将元素添加到集合
for(char c:ch)
{
al.add(c);
}
//调用getString()方法 并将集合与字符串传给方法
getString(al,st);
}
private static void getString(ArrayList<Character> al,String prefix)
{
for(int index=0;index<al.size();index++)
{ //复制集合
ArrayList<Character> alCopy = new ArrayList<Character>();
alCopy.addAll(al);
String str=prefix+alCopy.get(index);
//移除复制集合中的元素
alCopy.remove(index);
//递归调用本方法
getString(alCopy,str);
}
}
作者:
枕草虫
时间:
2015-9-21 17:16
不知道,也很困惑,按理说al.size==0的时候就不会执行for循环里面的内容。
不过如果你不使用alCopy,而直接操作al,就没有这个问题。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2