递归调用的return位置问题.高手赐教

来源:百度知道 编辑:UC知道 时间:2024/05/30 10:29:32
我用java写了一个递归函数,用来识别一个集合中包含的标签的id,但是结果非常的不对,请哪位老大指教下..谢谢谢谢了..
Exception in thread "main" java.lang.StackOverflowError
at java.util.ArrayList.<init>(ArrayList.java:120)
at IdentifyTree.identify(IdentifyTree.java:15)

public void identify(ArrayList<Tag> al,String sign)
{
ArrayList<Tag> left=new ArrayList<Tag>();
ArrayList<Tag> right=new ArrayList<Tag>();
if(sign=="")//first
{
for(Iterator iter=al.iterator();iter.hasNext();)
{
Tag tag=(Tag)iter.next();
if(tag.id.indexOf("0")==0)
{
left.add(tag);
}
if(tag.id.indexOf("1")==0)
{
right.add(tag);
}
}
identify(left,"0");

identify(right,"1");
}
else

if(al.size()>1)
{
for(Iterator it=al.iterator();it.hasNext();)

不同意上述答复:
原因:public void identify(ArrayList<Tag> al,String sign)
这个函数是返回void但是有参数al,sign
而在identify函数中又有调用自身的语句如:identify(left,"0"); identif(right,"1");
所以......
不过我没有细看错误在哪儿。但不是楼上所说那么简单。

你没有return到你的方法名上啊.

就不可能递归的.

pulic void getName()
{
.
.
.
.
return getName()
}