Java中的遞迴和迭代有什麼區別?


遞迴迭代都重複執行一組指令。遞迴是指函式中的語句反覆呼叫自身迭代是指迴圈反覆執行,直到控制條件變為假。遞迴和迭代的主要區別在於,遞迴是一個過程,總是應用於函式;而迭代應用於我們想要反覆執行指令集

遞迴

  • 遞迴使用選擇結構
  • 如果遞迴步驟沒有以某種收斂於某個條件(基本情況)的方式減少問題,則會發生無限遞迴,無限遞迴可能導致系統崩潰。
  • 當識別出基本情況時,遞迴終止。
  • 由於維護堆疊的開銷,遞迴通常比迭代慢
  • 遞迴比迭代使用更多記憶體
  • 遞迴使程式碼更簡潔

示例

線上演示

public class RecursionExample {
   public static void main(String args[]) {
      RecursionExample re = new RecursionExample();
      int result = re.factorial(4);
      System.out.println("Result:" + result);
   }
   public int factorial(int n) {
      if (n==0) {
         return 1;
      }
      else {
         return n*factorial(n-1);
      }
   }
}

輸出

Result:24


迭代

  • 迭代使用重複結構
  • 如果迴圈條件測試永遠不會變為假,則迭代會發生無限迴圈,無限迴圈會反覆使用CPU週期。
  • 迴圈條件失敗時,迭代終止
  • 迭代不使用堆疊,因此它比遞迴快
  • 迭代消耗更少的記憶體
  • 迭代使程式碼更長

示例

線上演示

public class IterationExample {
   public static void main(String args[]) {
      for(int i = 1; i <= 5; i++) {
         System.out.println(i + " ");
      }
   }
}

輸出

1
2
3
4
5

更新於:2019年7月30日

3K+ 瀏覽量

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告