通过递归导致堆栈溢出

时间:2016-07-18 22:41:21

标签: recursion stack-overflow

我一直在使用二叉树在c ++中实现字符串的优先级队列。

我认为递归的简单性非常好。我不会发布代码,因为我今天已经花了很长时间使用调试器而且我不是要求有人为我调试,但基本上是在实现递归方法后出列并插入元素并测试高达1000的正确行为随机字符串我使用了一个测试集线器,试图将10000个随机字符串排入队列,并且我有一个堆栈溢出错误。在此之后,我已经改变了我的递归方法,其他人使用指针光标扫描我的树以使用相同的逻辑插入和出列,并且它没有像我预期的那样崩溃(我几乎把它编码为链表)。

问题是,即使我通过引用传递,我是否可以通过递归导致堆栈溢出?

这些递归方法是类的一部分,并定义为private。

我希望这个问题不含糊,但我在c ++中仍然没有足够的经验。 非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

在递归中,您一次又一次地调用您的函数。在每次通话时,您都使用堆栈内存parameters, stack variables and more。所以基本上答案是肯定是,深度递归会导致堆栈溢出。