選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP 如何 W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA 生成式 AI SCIPY AWS 網路安全 資料科學
     ❯   

C 遞迴


遞迴

遞迴是一種函式呼叫自身的技術。這種技術提供了一種將複雜問題分解為更容易解決的簡單問題的方法。

遞迴可能有點難以理解。理解其工作原理的最佳方法是進行實驗。


遞迴示例

將兩個數字相加很容易,但將一系列數字相加則更為複雜。在下面的示例中,遞迴用於將一系列數字相加,將其分解為相加兩個數字的簡單任務。

示例

int sum(int k);

int main() {
  int result = sum(10);
  printf("%d", result);
  return 0;
}

int sum(int k) {
  if (k > 0) {
    return k + sum(k - 1);
  } else {
    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

由於當 `k` 為 0 時函式不呼叫自身,程式在此停止並返回結果。

開發人員在使用遞迴時應非常小心,因為它很容易導致函式永不終止,或者使用過多的記憶體或處理器能力。然而,如果編寫正確,遞迴可以是一種非常高效且數學上優雅的程式設計方法。



×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援