2014-12-02 80 views
0
public String recursiveToString() 
    { 
    DoubleLinkedListNode<T> current = first; 
    String list = ""; 

    if(current == null) 
    { 
     return ""; 
    } 
    else 
    { 
     list += current.info + ", "; 
     current = current.next; 
     return list + recursiveToString(); 
    } 
    } 

当我运行代码时应该打印出列表,但它每次运行时都会崩溃。这就是我迄今为止所做的一切。toString方法使用递归的双向链表

+0

您重置当前首先每一个电话,你可能会想传递给函数,你每次还重置列表变量。 – 2014-12-02 18:12:13

+0

欢迎光临!首先,如果您可以标记您使用的语言,那就太好了。另外,请尝试提供有关您问题的更多详细信息。只是说“它只是崩溃”非常模糊。你看到堆栈溢出异常吗?空引用异常?当试图找出代码中问题的位置时,这种信息可能非常有价值。有一个伟大的逗留:) – 2014-12-02 18:14:51

回答

0

首先你要每次通过该列表中的当前位置回功能,从而改变你的签名,以这样的:

public String recursiveToString(DoubleLinkedListNode<T> current) 

然后改变你的代码了一点,所以它使用的是和继续传递下去,列表变量也是没有必要的,递归会照顾串联一切:

public String recursiveToString(DoubleLinkedListNode<T> current) 
{ 
    if(current == null) 
    { 
     return ""; 
    } 
    else 
    { 
     return current.info + " " + recursiveToString(current.next); 
    } 
} 

如果你想做到这一点不改变功能的签名,只是重命名我的功能上面并创建definit离子为您参数的功能,像这样:

public String recursiveToString() 
{ 
    return aboveFunction(first); 
} 
+0

有没有一种方法来重写代码而不传递任何参数? – confusedprogammer 2014-12-02 18:18:16

+0

是的,看看我的编辑,你仍然想要我定义的函数,你的无参数函数会简单的称之为传递第一个元素 – 2014-12-02 18:18:41

+0

哦,我应该想到这样做,谢谢! – confusedprogammer 2014-12-02 18:23:36