選單
×
   ❮     
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 GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Java 教程

Java HOME Java Intro Java Get Started Java Syntax Java Output Java Comments Java Variables Java Data Types Java Type Casting Java Operators Java Strings Java Math Java Booleans Java If...Else Java Switch Java While Loop Java For Loop Java Break/Continue Java Arrays

Java Methods

Java Methods Java Method Parameters Java Method Overloading Java Scope Java Recursion

Java Classes

Java 面向物件程式設計 Java 類/物件 Java 類屬性 Java 類方法 Java 建構函式 Java 修飾符 Java 封裝 Java 包 / API Java 繼承 Java 多型 Java 內部類 Java 抽象 Java 介面 Java 列舉 Java 使用者輸入 Java 日期 Java ArrayList Java LinkedList Java 列表排序 Java HashMap Java HashSet Java 迭代器 Java 包裝類 Java 異常 Java 正則表示式 Java 執行緒 Java Lambda Java 高階排序

Java File Handling

Java Files Java Create/Write Files Java Read Files Java Delete Files

Java How To's

兩數相加 單詞計數 反轉字串 陣列元素求和 字串轉陣列 排序陣列 查詢陣列平均值 查詢最小元素 ArrayList 迴圈 HashMap 迴圈 遍歷列舉 矩形面積 偶數或奇數 正數或負數 平方根 隨機數

Java 參考

Java Reference Java Keywords Java String Methods Java Math Methods Java Output Methods Java Arrays Methods Java ArrayList Methods Java LinkedList Methods Java HashMap Methods Java Scanner Methods Java Iterator Methods Java Errors & Exceptions

Java 示例

Java Examples Java Compiler Java Exercises Java Quiz Java Server Java Certificate


Java 遞迴


Java 遞迴

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

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


遞迴示例

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

示例

使用遞迴將所有數字加到 10。

public class Main {
  public static void main(String[] args) {
    int result = sum(10);
    System.out.println(result);
  }
  public static 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 時函式不呼叫自身,程式在此停止並返回結果。



停止條件

就像迴圈可能遇到無限迴圈問題一樣,遞迴函式也可能遇到無限遞迴問題。無限遞迴是指函式永不停止呼叫自身。每個遞迴函式都應該有一個停止條件,即函式停止呼叫自身的條件。在前面的示例中,停止條件是當引數 `k` 變為 0 時。

檢視各種不同的示例有助於更好地理解這個概念。在此示例中,函式將一個起始值和結束值之間的數字範圍相加。此遞迴函式的停止條件是當 **end** 不大於 **start** 時。

示例

使用遞迴將 5 到 10 之間的所有數字相加。

public class Main {
  public static void main(String[] args) {
    int result = sum(5, 10);
    System.out.println(result);
  }
  public static int sum(int start, int end) {
    if (end > start) {
      return end + sum(start, end - 1);
    } else {
      return end;
    }
  }
}

自己動手試一試 »

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




×

聯絡銷售

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

報告錯誤

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

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

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