Cả Recursion và Iteration đều thực hiện liên tục một tập hợp các hướng dẫn. Recursion là khi một câu lệnh trong một hàm gọi chính nó liên tục. Iteration là khi một vòng lặp thực thi liên tục cho đến khi điều kiện điều khiển trở thành false. Khác biệt chính giữa recursion và iteration là recursion là một quá trình, luôn được áp dụng cho một hàm và iteration được áp dụng cho tập hợp các hướng dẫn mà chúng ta muốn thực thi liên tục.
Recursion (Đệ quy)
- Recursion sử dụng selection structure.
- Infinite recursion xảy ra nếu bước đệ quy không làm giảm vấn đề theo cách hội tụ về điều kiện nào đó (base case) và đệ quy vô hạn có thể làm sập hệ thống.
- Recursion kết thúc khi một base case được nhận diện.
- Recursion thường chậm hơn iteration do chi phí duy trì stack.
- Recursion sử dụng nhiều bộ nhớ hơn iteration.
- Recursion làm cho code nhỏ gọn hơn.
Ví dụ
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);
}
}
}Kết quả
Result:24
Iteration (Lặp)
- Iteration sử dụng repetition structure.
- Vòng lặp vô hạn xảy ra với iteration nếu điều kiện kiểm tra vòng lặp không bao giờ trở thành false và vòng lặp vô hạn sử dụng CPU cycles liên tục.
- Một iteration kết thúc khi điều kiện vòng lặp thất bại.
- Iteration không sử dụng stack nên nó nhanh hơn recursion.
- Iteration tiêu thụ ít bộ nhớ hơn.
- Iteration làm cho code dài hơn.
Ví dụ
public class IterationExample {
public static void main(String args[]) {
for(int i = 1; i <= 5; i++) {
System.out.println(i + " ");
}
}
}Kết quả
1 2 3 4 5