这种递归何时终止

when will this recursion terminate

本文关键字:终止 何时 递归      更新时间:2023-10-16

我不熟悉递归。下面的代码是对一段长代码的简化,它确实有效。里面没有"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]);
        }
    }
}

人们可能会怀疑,它终止于路径

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

因为树中的被认为没有任何进一步的子节点。

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

至于您的注释,void函数返回类型不需要显式的return语句。