[เขียนโปรแกรม] Recursive function คืออะไร?
Recursive function คือการที่ function เรียกใช้ตัวมันเองวนไปเรื่อย ๆ จนกว่าจะถึง break case คือหยุดเรียก function โดยมันเป็นรูปแบบการ loop รูปแบบหนึ่ง ซึ่ง recursive function จะพบเห็นได้ในทุกภาษาคอมพิวเตอร์ แต่ในบทความนี้จะขอเขียนโค้ดตัวอย่างแบบไม่ยึดติด syntax ของภาษาใดภาษาหนึ่งละกัน
ตัวอย่างที่ 1: Factorial
ตัวอย่างแรกขอยกอะไรง่าย ๆ อย่าง factorial ละกัน
function factorial(n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
จากตัวอย่างโค้ดจะเห็นว่า function มีการเรียกตัวมันเอง หากเราเรียก function โดยส่งเลข 5 ให้ไป การทำงานจะเป็นดังรูปนี้
จะสังเกตเห็น if statement ตรงนี้คือ break case จะไม่เรียก function ต่อแล้วเพื่อให้จบการทำงาน
ตัวอย่างที่ 2: Fibonacci
Fibonacci จะเจอบ่อยมากในโจทย์จำพวก recursive function หน้าตาโค้ดจะเป็นตามด้านล่างนี้
function fib(n) {
if (n <= 1) {
return n;
}
return fib(n - 1) + fib(n - 2);
}
อันนี้จะเริ่มยากขึ้นมานิดนึง เพราะแบ่งการเรียก function ออกมาเป็น 2 ตัวด้วยกัน ถ้าเราส่งเลข 5 เข้าไปจะได้ตามภาพนี้
สรุป
Recursive function มักจะเห็นในโจทย์บ่อยมาก แต่ในการทำงานจริงนั้น มักจะใช้ในยามที่จำเป็นจริง ๆ เท่านั้น เนื่องจากการทำงานของมันจะช้ามากเมื่อเทียบกับการใช้ loop แบบอื่น ๆ การจะนำไปใช้งานจริงต้องทดสอบดูการทำงานและความเร็วของมันอย่างถี่ถ้วนด้วย
ความคิดเห็น
แสดงความคิดเห็น