How to start Artificial Intelligence – recursion

บทนำ (Overview)

“Recursion” หรือ “Recursive function” เป็นลักษณะของการเขียนโปรแกรมด้วยเรียกฟังก์ชันเดิมซ้ำ จนถึงเงื่อนไขที่จะทำให้ยุติการเรียกใช้ฟังก์ชันเดิมอีกต่อไป แล้วผลของการ “Return” ฟังก์ชันสุดท้ายจะย้อนกลับไปเรื่อยจนถึงฟังก์ชันที่ใช้ครั้งแรก สาเหตุที่ต้องมีเงื่อนไขเพื่อยุติการเรียกใช้ฟังก์ชัน มิเช่นนั้นโปรแกรมจะไม่มีการเรียกตัวเองอย่างสิ้นสุด

ขั้นตอน (Steps)

  1. ทดสอบการเขียนโปรแกรมคำนวณ “Factorial” ตัวอย่างเช่น 5!  หมายถึง 5 x 4 x 3 x 2 x 1 = 120 เป็น
    [1]> (defun fac (n)
       (if (= n 0)
         1
         (* n (fac (- n 1)))
       )
    )
    FAC
    [2]> (fac 5)
    120
    
  2. จากการเรียกใช้ฟังก์ชัน “Fac” ลักษณะการเรียกใช้ฟังก์ชันจะเป็นดังนี้
    Fac5 => (* 5 (fac (- 5 1)))
    (* 5 (* 4 (fac (- 4 1))))
    (* 5 (* 4 (* 3 (fac (- 3 1)))))
    (* 5 (* 4 (* 3 (* 2 (fac (- 2 1))))))
    (* 5 (* 4 (* 3 (* 2 (* 1 (fac (- 1 1)))))))
  3. จากตัวอย่างข้างต้นเห็นว่า จะมีเงื่อนไขสำหรับการยุติ คือเมื่อ n = 0 โปรแกรมจะนวณย้อนกลับดังนี้
    Fac5 => (* 5 (* 4 (* 3 (* 2 (* 1 1)))))
    (* 5 (* 4 (* 3 (* 2 1))))
    (* 5 (* 4 (* 3 2)))
    (* 5 (* 4 6))
    (* 5 24)
    120

ใส่ความเห็น