2016-07-18 201 views
0

我一直在努力使用二叉樹在C++中實現字符串優先級隊列。通過遞歸導致堆棧溢出

正如我認爲遞歸的簡單性很好。我不會發布代碼,因爲我今天已經用調試器花了很長時間,並且我沒有要求某人爲我進行調試,但基本上在實現遞歸方法以實現遞送和插入元素並測試正確行爲(最多1000次)之後隨機字符串我已經使用了一個測試中心,試圖排入10000個隨機字符串,我有一個堆棧溢出錯誤。在此之後,我改變了我的遞歸方法,爲其他人使用指針遊標掃描我的樹插入和出隊使用相同的邏輯,它沒有崩潰,因爲我預期(我已經編碼它幾乎作爲一個鏈表)。

問題是,然後,即使我通過引用傳遞,是否可以通過遞歸導致堆棧溢出?

這些遞歸方法是一個類的一部分,並定義爲私有。

我希望這個問題不是模糊的,但我仍然沒有足夠的經驗在C++中。 非常感謝您的幫助!

+0

可能重複[堆棧溢出異常與遞歸](http://stackoverflow.com/questions/33766776/stack-overflow-exception-with-recursion) – Prune

+0

可能重複[什麼是StackOverflowError?](http: //www.stackoverflow.com/questions/214741/what-is-a-stackoverflowerror) – nhouser9

回答

1

在遞歸中,你一次又一次地調用你的函數。在每次調用中,您都使用parameters, stack variables and more的堆棧內存。所以基本上,答案是肯定是的,深層遞歸可能導致堆棧溢出。

+1

無限遞歸保證會導致錯誤。 –

+0

@ PM77-1在有限的機器上:) –

+0

我們只有在這種狀態下的有限機器 –