首頁>Club>
5
回覆列表
  • 1 # EOFError

    不止python 裡面有,其他語言裡面也有,遞迴函式把函式在呼叫的時候,透過壓棧操作,當前函式如果執行完成,進行彈棧的操作,最後到最初呼叫的時候,然後退出。函式遞迴是棧操作的一種應用。

  • 2 # 海的字碼

    首先,遞迴不是python獨有的,遞迴是一種演算法,簡單地說,就是一個函式不停地呼叫自己,直至達到停止條件。

    構成遞迴需具備兩個條件:

    子問題須與原始問題為同樣的事,且更為簡單; 不能無限制地呼叫本身,須有個出口(即要有個邊界),化簡為非遞迴狀況處理其中遞迴又分為直接遞迴和間接遞迴。

    遞迴又分為兩情況,分別為直接遞迴和間接遞迴。

    直接遞迴是在A函式中巢狀使用A函式,然後有一個停止該函式的條件。間接遞迴是在A函式中呼叫B函式,然後在B函式中呼叫A函式,即間接呼叫自己實現遞迴。

    這裡我用著名的斐波那契數列(即從第3項起,後一個數為前兩項之和)做演示:

    執行得出第10項結果為34,結果正確。現在我們來分析其執行過程中,為方便理解,我們計算第5項,執行過程我們用如下圖表示:

    從圖中我們可以看出,所謂遞迴,就是把大的事件,逐步細化分別進行處理,這就是分治的思想。

    那麼遞迴是在計算機中怎樣實現的呢?如果我們有了解過資料結構這門課程,我們就會知道,這就是用棧來實現的。

    還有一點值得注意的, 我們看上圖是不是有些相同的部分重複呼叫了,所以說使用遞迴會使程式變得相對慢一些,在日常開發中,我們是比較少用的,雖然遞迴的程式碼塊看起來比較簡潔。

  • 中秋節和大豐收的關聯?
  • 有沒有口袋冒險家平民玩法介紹?