首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请大家帮忙看看这段求数列组合的递归代码,多谢

2012-04-03 
请大家帮忙看看这段求数列组合的递归代码,谢谢!Java codeimport java.util.Arraysimport java.util.Linke

请大家帮忙看看这段求数列组合的递归代码,谢谢!

Java code
import java.util.Arrays;import java.util.LinkedList;import java.util.List;public class Test {    public static void main(String[] args) {             String[] array=new String[]{               "1","2","3","4"       };       listAll(Arrays.asList(array),"");    }    public static void listAll(List candidate,String prefix){        System.out.println(prefix);        for(int i=0;i<candidate.size();i++){            List temp = new LinkedList(candidate);            listAll(temp,prefix+temp.remove(i));        }    }}

这题是求一个数组里的数组合,比如1,2的数组合是1,2,12,21
这段代码我有些地方不是很明白:
 
Java code
for(int i=0;i<candidate.size();i++){            List temp = new LinkedList(candidate);            listAll(temp,prefix+temp.remove(i));        }

这个candidate是我困惑的地方,它每次赋值给temp的是什么?不知道我解释清楚了没有,或都哪位朋友能解释一下流程,谢谢!

[解决办法]
10个数字的组合
 ===
10个数字的某一个 + 其余9个数字的组合

然后递归下去,就是这样。

temp.remove() 会返回被移出的那个对象



[解决办法]
不错,学习了

热点排行