第七章:遞迴定義 — 動畫敘事

第八集 · Ch.7 遞迴定義
用自己
定義自己
字典裡查「遞迴」:見「遞迴」
這個玩笑背後藏著一個強大的數學工具——
遞迴定義讓我們用有限的文字
描述無限複雜的結構
遞迴定義的兩個部分
遞迴定義(Recursive Definition)
每個遞迴定義都必須有兩個部分:

① 基底情形(Base Case)
直接定義最簡單的情況,不用再遞迴。
例:F(0) = 0,F(1) = 1

② 遞迴情形(Recursive Case)
用更小的情況來定義當前情況。
例:F(n) = F(n-1) + F(n-2),其中 n ≥ 2
沒有基底情形 → 永遠遞迴,無法結束。
沒有縮小規模 → 無限循環,定義無效。
四個經典遞迴定義
階乘 n!
0! = 1 n! = n × (n-1)! (n ≥ 1)
費波那契數
F(0) = 0 F(1) = 1 F(n) = F(n-1) + F(n-2)
集合的子集
pow(∅) = {∅} pow(S∪{x}) = pow(S) ∪ {T∪{x} | T∈pow(S)}
二元樹
基底:空樹 遞迴: 左子樹 T_L 根節點 v 右子樹 T_R
Fibonacci 遞迴樹 — 重複計算問題
5
紅色節點表示重複計算。n 越大,重複越嚴重。
F(8) 的遞迴樹有 67 個節點,但只有 9 個不同的值需要計算。
結構歸納法
對遞迴定義的結構做歸納,就是結構歸納法
以二元樹的節點數 ≥ 葉節點數 為例:
基底情形:空樹或只有一個葉節點。
空樹:節點數 0 ≥ 葉節點數 0 ✓
單葉:節點數 1 ≥ 葉節點數 1 ✓
歸納假設:左子樹 T_L 和右子樹 T_R 各自滿足性質。
nodes(T_L) ≥ leaves(T_L)nodes(T_R) ≥ leaves(T_R)
遞迴情形:整棵樹 T 由根 + T_L + T_R 組成。
nodes(T) = nodes(T_L) + nodes(T_R) + 1
leaves(T) = leaves(T_L) + leaves(T_R)
由假設:nodes(T) ≥ leaves(T_L) + leaves(T_R) + 1 > leaves(T)
對所有二元樹,節點數 ≥ 葉節點數。
備忘錄法(Memoization)— 互動
計算過的值存起來,下次直接查表,避免重複計算。
按「下一步」看 F(6) 的計算順序。
按「下一步」開始計算 F(6)
觀念測驗
下面哪個遞迴定義是有效的(不會無限循環)?
小結
遞迴 =
有限定義無限
有了遞迴定義,就能用幾行文字描述整棵無限大的樹、
無限長的序列、無限深的結構。
再配上結構歸納法,就能證明這些無限結構的性質。
下一集:無限集合——有些無限比其他無限還大
閱讀完整第七章互動教材 →
1 / 8
本頁為動畫敘事版。看完後可前往 完整第七章 進行互動練習(Hilbert Hotel、集合大小比較)。

教材來源:Mathematics for Computer Science (Lehman, Leighton, Meyer)