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
廣告