【问题标题】:Linked list Recursion链表递归
【发布时间】:2009-11-04 23:14:43
【问题描述】:

所以,我正在阅读有关链表和递归的内容。我只是想知道为什么我不能在静态无效的方法中使用递归?另外,我想知道在 Java 中的链表递归中,为什么可以在打印或搜索节点时使用静态 void。谢谢你。

【问题讨论】:

  • 具体是哪种编程语言?
  • 考虑到上下文和返回值,它看起来像是一个 Java 或 C# 问题。 (考虑到上下文,C++ 不太可能)
  • 是的!你是正确的它的Java。

标签: java list recursion linked-list


【解决方案1】:

您可以在静态 void 的函数中使用递归。它只需要返回它的值或通过副作用做它应该做的事情,这通常被认为是有害的。但是对于打印来说,它非常有意义。

static void printList(node)
{
    if (node != null)
    {
        print(node);
        printList(node.next);
    }
}

【讨论】:

    【解决方案2】:

    使用递归时可以使用静态方法。您只需传递在函数内部工作所需的所有信息。由于链表的设计方式,强烈鼓励使用链表递归(每个节点都包含对下一个节点和(有时)其前一个节点的引用)。

    【讨论】:

    • 根据 JIT 编译器进行尾递归优化的能力,递归处理长链表可能会导致堆栈溢出。
    猜你喜欢
    • 2017-04-21
    • 1970-01-01
    • 2021-03-07
    • 2021-03-23
    • 2021-03-25
    • 2021-12-20
    • 2011-12-19
    • 2013-03-04
    相关资源
    最近更新 更多