遞歸與棧的關系:
可是為何執行了900多次就出錯了呢?還說超過了最大遞歸深度現在,為什么要限制呢?
通俗來講,是因為每個函數在調自己的時候還沒有退出,占內存,多了肯定會導致內存崩潰。
本質上講呢,在計算機中,函數調用是通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以遞歸調用的次數過多,會導致棧溢出。
遞歸與棧的關系:
可是為何執行了900多次就出錯了呢?還說超過了最大遞歸深度現在,為什么要限制呢?
通俗來講,是因為每個函數在調自己的時候還沒有退出,占內存,多了肯定會導致內存崩潰。
本質上講呢,在計算機中,函數調用是通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以遞歸調用的次數過多,會導致棧溢出。
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。