这个递归何时终止

时间:2016-01-06 20:45:50

标签: c++ recursion

我不熟悉递归。下面的代码片段是对一长段代码的简化,它确实有效。其中任何地方都没有"return"。有谁可以告诉我这个逻辑何时会终止?

void query(const Node& node) {
    if(node.isLeaf()) {if(node.value > 10) result.push(node);}
    else {
        for(unsigned i=0; i<node.numChild; ++i) {
            query(node.children[i]);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

有人会怀疑,它会在这条道路上终止

if(node.isLeaf()) {do something;}

因为树中的 leafs 被认为没有任何其他子节点。

但这完全取决于do something;涉及的内容。如果有query()的间接递归,它可能永远不会停止递归。

至于您的评论,return函数返回类型不需要明确的void语句。