遞歸算法轉換爲非遞歸算法的技巧

遞歸函數具有很好的可讀性和可維護性,但是大部分情況下程序效率不如非遞歸函數,所以在程序設計中一般喜歡先用遞歸解決問題,在保證方法正確的前提下再轉換爲非遞歸函數以提高效率。 函數調用時,需要在棧中分配新的幀,將返回地址,調用參數和局部變量入棧。所以遞歸調用越深,佔用的棧空間越多。如果層數過深,肯定會導致棧溢出,這也是消除遞歸的必要性之一。遞歸函數又可以分爲尾遞歸和非尾遞歸函數,前者往往具有很好的優化
相關文章
相關標籤/搜索