5 人同桌,第 5 人比第 4 人大 2 歲,第 4 人比第 3 人大 2 歲……第 1 人 10 歲。求第 5 人年齡。
age(n) = 10 , n = 1
age(n) = age(n-1) + 2 , n > 1
#include <stdio.h>
int age(int n) {
if (n == 1) return 10;
return age(n - 1) + 2;
}
int main(void) {
printf("第 5 人年齡:%d 歲\n", age(5)); // 輸出 18
return 0;
}
| 維度 | 遞迴 | 迭代 |
|---|---|---|
| 程式碼簡潔度 | 高 | 中 |
| 空間複雜度 | O(n) 堆疊 | O(1) |
| 除錯容易度 | 需堆疊追蹤 | 直觀 |
| 適用場景 | 樹狀結構、分治 | 簡單線性累加 |
