ฟังก์ชันที่เรียกต้วมันเอง เป็นฟังก์ชันชนิดหนึ่งเรียกว่า Recursive function ทำไมถึงต้องมีฟังก์ชันชนิดนี้ แล้วมันมีประโยชน์อย่างไร มาหาคำตอบกัน
แนวคิดของฟังก์ชันที่เรียกตัวมันเอง มีให้เห็นในปรากฏการณ์ทางธรรมชาติเหมือนกัน เช่น รูปร่างของเกล็ดหิมะ ต้นไม้ ใบเฟิร์น หรือ เปลือกหอย เป็นต้น รูปร่างของพวกมันจะมีหน้าตาเหมือนกัน แต่จะมีขนาดไม่เท่ากัน รูปแบบเหล่านี้เรียกว่า แฟร็กทัล (Fractal)
ในการคำนวณบางอย่าง เช่น การหาค่า factorial 5! = 5 x 4 x 3 x 2 x1 = 120 สามารถเขียนได้อีกรูปแบบหนึ่งคือ 5! = 5 x 4! ซึ่ง 4! = 4 x 3! , 3! = 3 x 2!, 2! = 2 x 1! เราจะเห็นรูปแบบการเรียกตัวมันเองเกิดขึ้นไปเรื่อย ๆ ด้วยตัวเลขที่ลดลงจนกระทั่ง 1! = 1 ซึ่งเป็นรูปแบบที่ไม่สามารถเรียกตัวมันเองได้อีกแล้ว
จากตัวอย่างข้างต้น จะเห็นได้ว่าการสร้างฟังก์ชันเรียกตัวมันเอง ต้องมีเงื่อนไขอยู่ 2 อย่างคือ
- ต้องมีรูปแบบพื้นฐานที่ไม่สามารถเรียกตัวมันเองได้ ซึ่งเป็นวิธีหยุดการทำงานของฟังก์ชันเรียกตัวมันเอง มิฉนั้น ฟังก์ชันจะทำงานไปเรื่อย ๆ ไม่มีวันจบ
- การเรียกตัวมันเองต้องมีแนวโน้มที่จะไปสู่รูปแบบพื้นฐาน ซึ่งอาจมีมากกว่า 1 แบบก็ได้
การเขียนโปรแกรมด้วยฟังก์ชันแบบนี้ จะทำให้ได้โปรแกรมที่สั้นและเข้าใจได้ง่าย (รึเปล่า) ซึ่งใน BYOB สามารถทำได้เช่นกัน มาลองดูกันคราวหน้านะครับ