[เขียนโปรแกรม] 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 แบบอื่น ๆ การจะนำไปใช้งานจริงต้องทดสอบดูการทำงานและความเร็วของมันอย่างถี่ถ้วนด้วย
![ตัวอย่างที่ 1: Factorial [เขียนโปรแกรม] Recursive function คืออะไร?](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJwBcjZ7F8OXNKcQs-8W6RvAZcGzx4DmeJSmIlGmtcRwfPbmW45h08LvBuAqD4Qulypmx4HWtdvqzMRU_1ptjAWU1eSZ2YPALaHqhll2brPWas7DVj632NAH0HbTuFTeOGDfr8DJ90tD03/w640-h234/factorial-5-return-5-factorial-4-Facebook-Post.png)
![ตัวอย่างที่ 2: Fibonacci [เขียนโปรแกรม] Recursive function คืออะไร?](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkdiWhHr2BB8aeobxbmkirQdNSAPICBvR2L0HzCWzSKKUdgGhndenvmO0lpvt7Cej9ZssaRfw0rteIHk0zbgK8uudcljCAw67wbd5IM8LWg0POSlPtUSjqc4Bm8UOD0vC0jBgzEbNMDLOw/w640-h226/factorial-5-return-5-factorial-4-Facebook-Post+%25282%2529.png)
ความคิดเห็น
แสดงความคิดเห็น