回覆列表
  • 1 # 純潔的激進派

    遞迴是演算法,和語言沒關係。你如果學過演算法分析,就應該知道,遞迴可以用樹遍歷演算法實現。遞迴的空間複雜度高,樹遍歷的時間複雜度高。

  • 2 # 星火天穹

    可以的。比如動態規劃。但是遞迴是一種思想,是其它一些更高階演算法的基石,還是要學習研究一下的。蘋果的喬布斯年輕時就很喜歡研究遞迴演算法。

  • 3 # 渡雲天

    遞迴就是自己呼叫自己。

    既然是自己呼叫自己,能完成這個操作的一般就是函式或者過程。

    函式在遞迴呼叫自己的時候,就好比剝洋蔥皮一般,只要洋蔥沒有剝完,就呼叫自身繼續剝下一層,每剝一層皮就看看是否剝完了,完事就結束(需要一次一次的返回到最開始剝洋蔥皮那次才能最終結束),沒剝完就繼續呼叫自身剝下一層…

    因為每呼叫一次自身,都需要進行一系列的“保護現場”、當前函式“退場”,新的函式“入場”等操作,並且等最終完成時還得按照相反順序逐次(執行多少次得到結果就返回多少次)返回“同一個函式”的運算結果,一直到最初呼叫函式的時候,這才算完。

    使用遞迴的一大優點就是思路流暢、程式碼簡潔,不過代價也比較大,可以想象,使用遞迴時的時間、空間開銷實在是傷不起。

    遞迴演算法用非遞迴演算法解決,一般有如下方法:

    1、可以用迴圈結構的演算法替代 ;

    2、自己用堆疊模擬執行時棧,分析只儲存必須儲存的資訊,從而用非遞迴演算法替代遞迴演算法。

  • 中秋節和大豐收的關聯?
  • 養什麼魚不要肥水?