【发布时间】:2012-04-26 02:56:17
【问题描述】:
我有一个递归函数,它在给定某些输入的情况下会多次调用自己——这正是它应该做的。我知道我的函数不是无限循环的——它只是得到一定数量的调用和溢出。我想知道这是否是在堆栈上放置太多内存的问题,或者只是调用次数的正常限制。显然,很难说出最大的特定呼叫次数,但是任何人都可以给我一个数量级的粗略估计吗?数以千计吗?数百?百万?
【问题讨论】:
-
这取决于你每次通话的内容。
-
如果它溢出堆栈执行“正是它应该做的”,那么你应该稍微改变一下算法。
-
我感到原力受到干扰。如果您甚至接近这种限制,我建议您使用迭代解决方案:)
-
这就是为什么我想知道限制在什么样的范围内。
-
@Fish:通过比较相邻栈帧中相同局部变量的地址,可以找到每个递归层级的空间消耗。
标签: c++ stack-overflow