【发布时间】:2018-09-24 10:11:38
【问题描述】:
C 程序使用递归来查找图的属性。由于堆栈空间太小,无法处理大图。程序必须重新编码以使用显式堆栈和循环。
递归函数是否应该首先检查输入是否“适合”堆栈空间?
在 linux 内核中是否有一个递归函数必须替换为“显式”递归的示例?
【问题讨论】:
-
我认为大多数时候几乎不可能检查输入是否适合堆栈,因为输入可能是一个非常复杂的表达式。
-
在生产环境中,递归保持在最低限度,SO 风险几乎为零。我怀疑 Linux 内核中有很多递归是在 CPU 堆栈上完成的。
-
什么是“显式递归”
-
@Mulliganaceous “显式递归” 使用显式堆栈和循环实现递归,而不是使用使用进程堆栈的递归函数(隐式)参见stackoverflow.com/questions/3391285/…
-
我不确定它是否对你有帮助:考虑limiting the recursion depth
标签: c recursion linux-kernel stack stack-overflow