在达到一定步数后停止递归

3

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


4
有趣的事实:一些语言只有递归;没有循环。 - nmichaels
@fprime:关于你的更新,我完全看不出这怎么可能有效。你没有向countGrandChildren()的递归调用传递任何参数。 - Oliver Charlesworth
为什么我要传递任何东西?按照规定,我不应该这样做。 - Snowman
@fprime:请重新阅读我下面的答案和示例代码。 - Oliver Charlesworth
可能是重复的问题:帮助解决Java树形递归问题 - user207421
显示剩余3条评论
2个回答

11

在您的递归方法中添加一个depth参数,并在自身调用之前将其加1,例如:

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

4
maxDepth这个参数是从哪里来的?使用减少每个调用中的深度的depthRemaining会更好,当深度达到0时停止。 - Peter Lawrey

2

将“递归深度”参数传递给您的递归函数,并在每次调用函数时将其递增。

当达到限制时,停止递归。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接