跳至主要内容

Recursion

遞迴(Recursion)是一種程式設計技巧、思考邏輯或是演算法策略。

它指的是在函式中呼叫自己的行為,用來將大問題拆解成相似的小問題,本身不算是一個「完整的演算法」。

當面對重複性問題時,常常可用迴圈(Loop)來處理,而 Recursion 則是另一種方式,甚至在某些情況下,使用 Recursion 會更方便。

必要條件

使用遞迴,有兩個必要條件:

  • Base Case:讓遞迴停止的情形
  • 輸入不同的 input

範例:計算階乘

階乘(例如 5! = 5 × 4 × 3 × 2 × 1)是理解遞迴最直覺的例子。

function factorial(n) {
// 1. Base Case:當 n 降到 1 或 0 時,停止呼叫並回傳 1
if (n === 0 || n === 1) {
return 1;
}

// 2. 遞迴步驟:n! = n * (n-1)!
return n * factorial(n - 1);
}

console.log(factorial(5)); // 輸出: 120 (5 * 4 * 3 * 2 * 1)