C 中的遞歸是一種程式設計技術,函數直接或間接呼叫自己來解決問題。這種方法對於可以自然分解為更小的、自相似子問題的問題特別有用。
C 中的遞歸函數通常由兩個主要部分組成:
遞歸如何運作?
若要瞭解遞迴在內部的工作原理,請務必查看呼叫堆疊在遞迴呼叫期間的行為方式。每次函數呼叫自己時,目前狀態都會儲存在堆疊上,並開始新的呼叫。一旦達到基本情況,函數就會開始傳回,一次一次呼叫一次。
下列範例示範遞減階段 (深入遞迴) 和遞增階段 (從遞迴返回):
#include <stdio.h>
void f(int n) {
printf("F(%d)'s Stack Frame Pushed\n", n);
if (n > 1) {
f(n - 1);
f(n - 1);
}
printf("F(%d)'s Stack Frame Removed\n", n);
}
int main() {
f(3);
return 0;
}