【发布时间】:2013-07-05 17:36:09
【问题描述】:
我试图使用递归来反转链表。我得到了解决方案,但无法解决在互联网上找到的以下问题。
使用递归反转链表,但函数应该有 void 返回类型。
我能够实现返回类型为 Node 的函数。以下是我的解决方案。
public static Node recursive(Node start) {
// exit condition
if(start == null || start.next == null)
return start;
Node remainingNode = recursive(start.next);
Node current = remainingNode;
while(current.next != null)
current = current.next;
current.next = start;
start.next = null;
return remainingNode;
}
我无法想象这个问题是否会有这样的解决方案。
有什么建议吗?
【问题讨论】:
-
向我们展示您的尝试。
-
为什么不用尾递归?
-
相当危险的实现,但对于练习来说还可以。递归通常在教学中使用很多,但如果您不知道最大递归深度,则不应在现实世界中使用递归。当深度取决于某些输入数据时,您很容易遇到 StackOverflow 错误。在大学或编程课程中通常会省略此细节。
标签: java algorithm data-structures recursion linked-list