【发布时间】:2016-06-14 04:39:42
【问题描述】:
有没有办法在 c++ 中知道最大递归深度而无需显式调用递归直到它崩溃?
我发现这受到堆栈大小的限制。也许在特定的递归级别找到堆栈中的可用空间量会很有用。有可能吗?
【问题讨论】:
-
C++中没有定义最大深度的内容。最大深度取决于 CPU 架构、特定于编译器的实现细节以及被递归的实际函数(连同它调用的子函数)。就像任何其他问题一样,当然,如果您知道所有参数,就可以确定解决方案....但在这种情况下,只进行显式调用并查看您得到的结果可能要容易得多。 -
虽然
[temp.inst]中有一段说有一个实现定义的数量。 -
那么如果有办法检查空闲堆栈大小以便在递归低于指定限制时停止递归?
-
任何答案都将是特定于平台和编译器的,因此您应该在问题中指定这些。
-
@Jepessen:无论您遇到什么问题,这都是错误的解决方案。