这种递归何时终止
when will this recursion terminate
我不熟悉递归。下面的代码是对一段长代码的简化,它确实有效。里面没有"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
语句。
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 何时在引用或唯一指针上使用移动语义
- 何时提供默认参数作为模板参数
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 我收到以下错误:抛出'std::bad_alloc'实例后终止调用
- C++-明确何时以及如何调用析构函数
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 当我在其中一个线程执行中(在activemq-cpp中)捕获到特定值时,我如何终止/停止所有其他线程
- llvm构建器向基本块添加终止符
- 在以唯一ptr为值的C++映射中,动态内存何时会被销毁
- 使用信号检测子进程何时终止的最佳方法是什么?
- 以下代码如何工作以及何时终止
- c++ 终止程序的内存泄漏何时重要?
- Boost ::线程何时终止?如何管理Boost ::线程
- 为什么需要它!=obj.end() 尽管每个迭代器都应该知道自己何时终止
- 我如何知道IMAGE_THUNK_DATA数组何时终止
- 这种递归何时终止
- 如何知道何时终止线程
- Std::thread在对象中派生的线程,它何时终止?
- 何时应该终止MPI子进程