Categories
BYOB Programming

ฟังก์ชันที่เรียกต้วมันเอง

ฟังก์ชันที่เรียกต้วมันเอง เป็นฟังก์ชันชนิดหนึ่งเรียกว่า 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. ต้องมีรูปแบบพื้นฐานที่ไม่สามารถเรียกตัวมันเองได้ ซึ่งเป็นวิธีหยุดการทำงานของฟังก์ชันเรียกตัวมันเอง มิฉนั้น ฟังก์ชันจะทำงานไปเรื่อย ๆ ไม่มีวันจบ
  2. การเรียกตัวมันเองต้องมีแนวโน้มที่จะไปสู่รูปแบบพื้นฐาน ซึ่งอาจมีมากกว่า 1 แบบก็ได้

การเขียนโปรแกรมด้วยฟังก์ชันแบบนี้ จะทำให้ได้โปรแกรมที่สั้นและเข้าใจได้ง่าย (รึเปล่า) ซึ่งใน BYOB สามารถทำได้เช่นกัน มาลองดูกันคราวหน้านะครับ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s