C++ 遞迴
遞迴
遞迴是一種函式呼叫自身的技術。這種技術提供了一種將複雜問題分解為更容易解決的簡單問題的方法。
遞迴可能有點難以理解。理解其工作原理的最佳方法是進行實驗。
遞迴示例
將兩個數字相加很容易,但將一系列數字相加則更為複雜。在下面的示例中,遞迴用於將一系列數字相加,將其分解為相加兩個數字的簡單任務。
示例
int sum(int k) {
if (k > 0) {
return k + sum(k - 1);
} else {
return 0;
}
}
int main() {
int result = sum(10);
cout << result;
return 0;
}
自己動手試一試 »
示例解釋
當呼叫 `sum()` 函式時,它將引數 `k` 與所有小於 `k` 的數字之和相加並返回結果。當 k 變為 0 時,函式只返回 0。執行時,程式遵循以下步驟:
10 + sum(9)
10 + ( 9 + sum(8) )
10 + ( 9 + ( 8 + sum(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + sum(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0
10 + ( 9 + sum(8) )
10 + ( 9 + ( 8 + sum(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + sum(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0
由於當 `k` 為 0 時函式不呼叫自身,程式在此停止並返回結果。
開發人員在使用遞迴時應非常小心,因為它很容易編寫出永不終止的函式,或者使用過量記憶體或處理器能力的函式。然而,如果編寫正確,遞迴可以是一種非常高效且數學上優雅的程式設計方法。