【问题标题】:Stop recursion after a certain amount of steps在一定数量的步骤后停止递归
【发布时间】:2010-11-06 20:49:20
【问题描述】:

这个问题让我很困惑。我有一棵树,我想写一个方法来计算某个节点的孙子(但不是曾孙)的数量。我不能使用循环,只能使用递归。所以问题是我将如何实现我的基本案例?我如何让它停止?我想不出有什么方法可以实现...

【问题讨论】:

  • 有趣的事实:有些语言只有递归;没有循环。
  • @fprime:关于您的更新,我完全看不出它是如何工作的。您没有将任何内容传递给 countGrandChildren() 的递归调用。
  • 为什么我会通过任何东西?我不应该..
  • @fprime:请重新阅读我的答案和下面的示例代码。
  • 我无法选择要采用的参数。我必须创建一个不带参数并返回 int 的方法。

标签: java recursion tree


【解决方案1】:

在你的递归方法中有一个 depth 参数,并让它在自调用之前加 1,即:

void myMethod(int depth) {
    /* ... Do something ... */
    if (depth < maxDepth) {
        child.myMethod(depth + 1);
    }
}

【讨论】:

  • 最大深度从何而来?每次调用都会递减一个 depthRemaining 不是更好吗,当深度达到 0 时,停止。
【解决方案2】:

将“递归深度”参数传递给递归函数,每次调用该函数时递增。

当你达到极限时,你停止递归。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2015-08-05
    • 1970-01-01
    相关资源
    最近更新 更多