请教:JAVA递归问题

way08 2009-09-03 10:01:18
今天看到一个JAVA的递归程序,程序的流程不是很清楚,希望大家帮忙分析一下,谢谢
程序代码如下:
import java.util.Arrays;
import java.util.*;
import java.io.*;

public class listTest {
public static void main(String[] args) {
String[] array = new String[]{
"1","2","3","4"
};
listAll(Arrays.asList(array), "");
}

public static void listAll(List candicate,String prefix){
System.out.println(prefix);

for(int i=0;i<candicate.size();i++){
List temp = new LinkedList(candicate);
listAll(temp,prefix+temp.remove(i));
System.out.println("temp:"+temp);
System.out.println("prefix:"+prefix);
}

}
}

在for循环中,i=0的情况下,输出的结果为:
1
12
123
1234
temp:[]
prefix:123

接下来就不清楚程序如何运行了,请大家帮忙看一下,谢谢
...全文
144 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
碰碰real 2009-09-03
  • 打赏
  • 举报
回复
关注一下
yanliang_xt 2009-09-03
  • 打赏
  • 举报
回复

listAll(1234,"")
print ""
for(int i=0;i <candicate.size();i++){
temp = 1 2 3 4
listAll(234,1)
print 1 -----------------
for(int i=0;i <candicate.size();i++){
temp = 234
listAll(34,12)
print 12 -----------
for(int i=0;i <candicate.size();i++){
temp = 34
listAll(4,123)
print 123 ---------------
for(int i=0;i <candicate.size();i++){
temp = 4
listAll(null,1234)
print 1234
for(int i=0;i <candicate.size();i++){
return

temp: null
prefix = 123

temp = 34
listAll(3,124)
print 124 ------------
for(int i=0;i <candicate.size();i++){
temp = 3
listAll(null,1243)
print 1243 ---------
for(int i=0;i <candicate.size();i++){
return

temp: null
prefix = 124


..........
........


应该是列出所有可以的前缀的情况。
jrj2330345 2009-09-03
  • 打赏
  • 举报
回复
帮顶
justinavril 2009-09-03
  • 打赏
  • 举报
回复
listAll(Arrays.asList(array), "");这一句的作用应该是输出1,2,3,4所有可能的全排列吧,也就是说从这4个数中抽取1个数全排列,2个数全排列,3个数全排列和4个数全排列。打印出这些全排列来。
阿彪兄 2009-09-03
  • 打赏
  • 举报
回复
支持一下
longq121 2009-09-03
  • 打赏
  • 举报
回复
不懂,我也搞糊涂了,请教高手!

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧