这样的递归有什么问题吗?

sailor11 2004-10-10 10:19:59
这样的递归有什么问题吗?
private LinkNode mergeSortHelp(LinkNode head)//归并排序
{
LinkNode otherFirst;
if(head!=null)
{
if(head.next!=null)
{

otherFirst=split(head);
head=mergeSortHelp(head);
otherFirst=mergeSortHelp(otherFirst);
head=mergeNode(head,otherFirst);
}
}
return head;
}
其中spilt()和mergeNode()的定义如下:
private LinkNode split(LinkNode head)//拆分
{
LinkNode current;

if(head==null) return null;
if(head.next==null) return head;
if(head.next.next==null) return head.next;

current=head.next;
while(current!=null)
{
head=head.next;
current=current.next;
if(current!=null)
current=current.next;
}
return head;
}


private LinkNode mergeNode(LinkNode node1,LinkNode node2)//合并有序子表
{
int node1L=getNodeNextCount(node1);
int node2L=getNodeNextCount(node2);

int i=0;
int j=0;

LinkNode current=new LinkNode();
LinkNode result=current;

while((i<node1L)&&(j<node2L))
{

if(((Comparable)node1.getData()).compareTo((Comparable)node2.getData())<0){

current.next=node1;
node1=node1.next;
current=current.next;
i++;}
else{

current.next=node2;
node2=node2.next;
current=current.next;
j++;}



}
if(i==node1L)
{
while(node2!=null)
{
current.next=node2;
node2=node2.next;
current=current.next;
}
}
if(j==node2L)
{
while(node1!=null)
{
current.next=node1;
node1=node1.next;
current=current.next;
}
}
result=result.next;

return result;
}
但运行后,抛出StackOverflowError,怎么回事啊
...全文
62 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
power17 2004-10-10
  • 打赏
  • 举报
回复
除非没办法,否则不用递归,运行慢
zhang21cnboy 2004-10-10
  • 打赏
  • 举报
回复
递归太多了。

81,122

社区成员

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

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