แรคคูน คืออะไร

แรคคูน (Recursion) เป็นกระบวนการหรือเทคนิคในการวางโครงสร้างของโปรแกรมหรือฟังก์ชั่น ที่มีการเรียกใช้ตัวเองเองซ้ำไปเรื่อยๆ เพื่อทำงานหรือคำนวณข้อมูลในลักษณะที่วนซ้ำ

ใช้แรคคูนเมื่อมีปัญหาหรืองานที่สามารถแบ่งเป็นปัญหาย่อยๆ ที่มีความคล้ายคลึงกัน และสามารถแก้ไขปัญหาย่อยนั้นๆ โดยเรียกใช้ตัวเองและเรียกใช้กลับมาเรื่อยๆ จนกว่าจะเข้าสู่เงื่อนไขการหยุด (base case) เพื่อให้ได้ผลลัพธ์สุดท้ายที่ต้องการ

ในการใช้แรคคูนควรมีคำสั่งสองส่วนหลัก นั้นคือ:

  1. Base Case: เป็นเงื่อนไขที่กำหนดว่าหากถึงแล้วให้หยุดเรียกใช้และคืนค่าออกมา ที่จำเป็นต้องใช้ในกรณีที่ไม่ต้องการวนซ้ำในจุดใดจุดหนึ่ง เพื่อไม่ให้เกิดการวนซ้ำไม่สิ้นสุด
  2. Recursive Case: เป็นตัวเรียกใช้ฟังก์ชั่นหรือตัวเองเพื่อทำงานหรือคำนวณในลักษณะที่เป็นการวนซ้ำ เพื่อให้สามารถแก้ไขปัญหาย่อยๆ ซึ่งมีความคล้ายคลึงกัน

ตัวอย่างของการใช้แรคคูน เช่น การคำนวณค่าแฟกทอเรียล (Factorial) ของเลขจำนวนเต็มบวก แฟกทอเรียลของเลขจำนวนเต็มบวก n (หรือ n!) คือผลคูณของตัวเลขทั้งหมดตั้งแต่ 1 ถึง n

สามารถเขียนฟังก์ชั่นแรคคูนในการคำนวณแฟกทอเรียลได้ดังนี้:

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

ในตัวอย่างนี้ เราใช้ Base Case เมื่อ n เป็น 0 โดยกำหนดให้คืนค่า 1 (เพราะแฟกทอเรียลของ 0 เป็น 1) และใช้ Recursive Case เพื่อคำนวณแฟกทอเรียลของเลขจำนวนเต็มบวก n โดยคูณ n กับแฟกทอเรียลของ n-1

เมื่อเราเรียกใช้ฟังก์ชั่นแรคคูน factorial(5) เราจะได้ผลลัพธ์เป็น 5 x 4 x 3 x 2 x 1 = 120