我不熟悉递归。下面的代码片段是对一长段代码的简化,它确实有效。其中任何地方都没有"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]);
}
}
}
答案 0 :(得分:0)
有人会怀疑,它会在这条道路上终止
if(node.isLeaf()) {do something;}
因为树中的 leafs 被认为没有任何其他子节点。
但这完全取决于do something;
涉及的内容。如果有query()
的间接递归,它可能永远不会停止递归。
至于您的评论,return
函数返回类型不需要明确的void
语句。