JAVA实现 递归算法

zxp209 2012-04-16 09:51:41
大家好!
现在有个需求,想用java实现一个递归算法。

需求是这样的 假如有两个数组 1,1,2 2,4,3

我想遍历@arr1作为根,最后实现类似oracle 的connect by

两列:
root_id id
1 2
1 4
2 3
4 5
5 6
把所有通路找出来,通路的顺序无所谓,只要找出来所有的通路就成。
想要的效果是打印如下内容:(root_id 和id的所有关系都打印出来)
1,2
1,2,3
1,4
1,4,5
1,4,5,6
2,3
4,5
4,5,6
5,6



当然,这只有5,6个元素的数组,道理是一样的,我库里的元素有200多个不到300个,而且有的层次很深,一个根延伸出来10几万的叶子,我用oracle connect by 进行递归经常几个小时也算不完,而且内存消耗过大
,所以想用java来实现,不知道能不能处理,请大侠们帮忙。

谢谢了。

补充一下,两个数组可能有回路,还需要规避回路情况,类似oracle nocycle connect by.
...全文
199 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chkaka 2012-04-17
  • 打赏
  • 举报
回复
package csdn;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class DiGui {
static Map<Integer, Integer> map=new <Integer, Integer>();
static String path="";
static{
//map.put(1, 2);
map.put(1, 4);
map.put(2, 3);
map.put(4, 5);
map.put(5, 6);
}

public static void doMap(){
for(Integer key : map.keySet()){
doRecursive(key);
}
}
/**
* 递归运算
* @param index
*/
public static void doRecursive(Integer index){
Integer value=map.get(index);
if(value!=null){
path=path.equals("")?index+","+value:path+","+value;
System.out.println(path);
doRecursive(value);
}
else{
path="";
}
}
/**
* @param args
*/
public static void main(String[] args) {
doMap();
}

}

1,4
1,4,5
1,4,5,6
2,3
4,5
4,5,6
5,6
大力水手POPEYE 2012-04-17
  • 打赏
  • 举报
回复
没能较好的理解楼主的意思,主要是搭了数据库有点蒙

13,097

社区成员

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

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