使用递归的双向链表的toString方法

时间:2014-12-02 18:09:55

标签: java recursion

 public String recursiveToString()
  {
    DoubleLinkedListNode<T> current = first;
    String list = "";

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

我应该在运行代码时打印出列表,但每次运行时它都会崩溃。这是我到目前为止所做的一切。

1 个答案:

答案 0 :(得分:0)

首先,您希望每次都将列表中的当前位置传回函数,因此请将您的签名更改为:

public String recursiveToString(DoubleLinkedListNode<T> current)

然后改变你的代码,以便它使用它并继续传递它,list变量也是不必要的,递归将负责连接所有内容:

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

如果您想在不更改函数签名的情况下执行此操作,只需重命名上面的函数并为无参数函数创建定义,如下所示:

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