Recursion และ Iteration ทั้งคู่ทำการ execute ชุดคำสั่งซ้ำๆ Recursion คือเมื่อคำสั่งในฟังก์ชัน เรียกตัวเองซ้ำๆ ส่วน Iteration คือเมื่อลูป execute ซ้ำจนกว่าเงื่อนไขควบคุมจะเป็น false ความแตกต่างหลักคือ recursion เป็นกระบวนการที่ใช้กับฟังก์ชันเสมอ ส่วน iteration ใช้กับ ชุดคำสั่ง ที่เราต้องการให้ execute ซ้ำ
Recursion
- Recursion ใช้ selection structure
- Infinite recursion เกิดขึ้นหากขั้นตอน recursion ไม่ลดปัญหาให้เข้าเงื่อนไขพื้นฐาน (base case) และ infinite recursion อาจทำให้ระบบ crash
- Recursion จบเมื่อพบ base case
- Recryption ปกติ ช้ากว่า iteration เนื่องจาก overhead ของการ maintain stack
- Recursion ใช้ หน่วยความจำมากกว่า iteration
- Recursion ทำให้ โค้ดสั้นกว่า
ตัวอย่าง
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
Iteration
- Iteration ใช้ repetition structure
- Infinite loop เกิดขึ้นกับ iteration หากเงื่อนไขลูปไม่เคยเป็น false และ infinite looping ใช้ CPU cycles ซ้ำๆ
- Iteration จบ เมื่อ loop condition fails
- Iteration ไม่ใช้ stack จึง เร็วกว่า recursion
- Iteration ใช้ หน่วยความจำน้อยกว่า
- Iteration ทำให้ โค้ดยาวกว่า
ตัวอย่าง
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