[Program] 三分鐘連猴子都能理解的遞迴核心
不論您是否有寫過程式,本文目的就是讓任何人都可以在三分鐘理解遞迴的核心。 遞迴是程式中很常使用的到,但對於初學者來說確實有一點門檻,本篇就以[反向重組字串]範例說明。 目標: 反向重組字串,假設我有一個字串為"ABCD",我要反向重組字串為"DCBA"。 這個看似很容易,但是 如果有10000個字呢? 這時候就可用使用程式的 遞迴 來完成了。 反向重組字串,我們從人類的角度看,就是: 『把最後一個字記錄下來,並且把那個字移除,並組合起來』 然後不斷重複這個邏輯對吧,這就是遞迴! 而程式中就會把這個邏輯定義成一個方法 function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 遞迴我認為可以拆解成兩個字,對照本範例如下: *把最後一個字記錄下來,並且把那個字移除 => 「遞」 *資料組合起來 => 「迴」 *要執行「迴」的步驟時,須要觸發判斷條件,也就是終止「遞」的步驟,否則就是無窮迴圈!! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 而把這個過程轉成一個固定邏輯,重複使用該邏輯就是遞迴的核心!!! 遞迴的核心就是 "自己" 呼叫 "自己" ! 也因為自已呼叫自己,會有一層一層往內傳、多層嵌套的概念,就向俄羅斯娃娃一樣~ 那先用一張圖,快速理解 反向重組字串 的過程。 後面用文字說明主邏輯: 1. 第一次呼叫方法,傳入 'ABCD' ,紀錄最後一碼 'D' ,並移除 'D' ,將 'ABC' 往下傳。 2. 第二次呼叫方法,傳入 'ABC' ,紀錄最後一碼 'C' ,並移除 'C' ,將 'AB' 往下傳。 3. 第三次呼叫方法,傳入 'AB' ,紀錄最後一碼 'B' ,並移除 'B' ,將 'A' 往下傳。 4. 第四次呼叫方法,傳入 'A' ,紀錄最後一碼 'A' ,並移除 'A...