gpt4 book ai didi

c++ - 查找最大递归深度

转载 作者:可可西里 更新时间:2023-11-01 15:24:50 25 4
gpt4 key购买 nike

有没有办法在 C++ 中知道最大递归深度,而无需显式调用递归直到它崩溃?

我已经看到它受堆栈大小的限制。也许在特定的递归级别查找堆栈中的可用空间量可能很有用。可能吗?

最佳答案

我现在唯一能想到的就是使用 getrlimit 来获取专用于您的进程的堆栈的最大大小。接下来要做的是找到一种获取当前使用的堆栈大小的方法。我以为getrusage是要走的路,但在查看了 man-page 和 SO 上的一些帖子后,它似乎不再支持此特定功能。所以你得另辟蹊径。我相信 Valgrind 也会报告堆栈使用情况,因此查看其源代码和文档可能会很有用。

一旦您能够获得当前筹码量,您就可以测量

  • 它在开始递归之前的初始状态(这样您就可以从计算中排除它,因为它与递归本身没有任何关系)

  • 单次迭代的变化

排除初始堆栈分配以及使用总堆栈大小和单个递归步骤所需的分配,您应该能够估计给定系统可以拥有的递归数。我不确定它是否会起作用,即使准确度也高度依赖于您使用的系统(毕竟堆栈与进程可以拥有的虚拟内存量密切相关) .

关于c++ - 查找最大递归深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35728387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com