[เขียนโปรแกรม] 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 ให้ไป การทำงานจะเป็นดังรูปนี้

[เขียนโปรแกรม] Recursive function คืออะไร?

จะสังเกตเห็น 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 คืออะไร?

สรุป

Recursive function มักจะเห็นในโจทย์บ่อยมาก แต่ในการทำงานจริงนั้น มักจะใช้ในยามที่จำเป็นจริง ๆ เท่านั้น เนื่องจากการทำงานของมันจะช้ามากเมื่อเทียบกับการใช้ loop แบบอื่น ๆ การจะนำไปใช้งานจริงต้องทดสอบดูการทำงานและความเร็วของมันอย่างถี่ถ้วนด้วย

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

[Blue Archive] รวมล็อบบี้ความทรงจำ (Live2D)

[Blue Archive] รีวิวมารินะ (Marina)

[Blue Archive] รีวิวชินัตสึ (Chinatsu)

[Blue Archive] รีวิวโฮชิโนะ (Hoshino)

[Blue Archive] รีวิวจุนโกะ (Junko)