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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP