การเรียกซ้ำ (Recursion)

Hierarchical and Recursive Queries in SQL Server

Jasmin Ludolf

Content Developer

Recursion คืออะไร?

Recursion คือการที่โพรซีเดอร์ ซับรูทีน ฟังก์ชัน หรืออัลกอริทึม เรียกตัวเองซ้ำหนึ่งครั้งหรือมากกว่า จนกว่าจะตรงตามเงื่อนไขที่กำหนด

ภาพแสดงคุณสมบัติ recursion ที่เรียกตัวเองซ้ำหลายครั้ง

Hierarchical and Recursive Queries in SQL Server

ตัวอย่าง Recursion ในชีวิตจริง

ต้นตระกูล - ค้นหาบิดาทุกคนย้อนหลัง 5 รุ่น

  • ลดปัญหาใหญ่ให้เป็นปัญหาย่อยประเภทเดียวกัน
    1. ปัญหาทั้งหมด: ค้นหาทั้ง 5 รุ่น
    2. ปัญหาย่อย: ค้นหาบิดา จากนั้นค้นหาบิดาของบิดา ...
  • จำกัดจำนวนขั้นตอน

ภาพแสดงคุณสมบัติ recursion ของ Tower of Hanoi

Hierarchical and Recursive Queries in SQL Server

ข้อเท็จจริงเกี่ยวกับ Recursion

ข้อดี:

  • แก้ปัญหาในรูปแบบ recursive ได้
  • อ่านและทำความเข้าใจได้ง่าย
  • ควบคุมการทำงานซ้ำด้วยเงื่อนไขหยุด

ข้อเสีย:

  • ทำงานได้ช้ากว่า
Hierarchical and Recursive Queries in SQL Server

ตัวอย่าง Recursion - ผลรวมของจำนวน

นิยามทางคณิตศาสตร์

ผลรวมของจำนวนเต็มต่อเนื่องกันนิยามแบบ recursive ดังนี้

number = 1 
    for iteration = 1
number = number + (iteration - 1) 
    for iteration > 1

ผลรวมของจำนวนตั้งแต่ 1 ถึง 5 คือ

1+2+3+4+5 = 15
Hierarchical and Recursive Queries in SQL Server

ตัวอย่าง Recursion - ผลรวมของจำนวน

  • Recursion ใน SQL: Common Table Expression - CTE
WITH calculate_SumOfNumber AS
     ( -- Initial Query
    SELECT 1 AS iteration, 1 AS SumOfNumber

UNION ALL -- Recursive Part SELECT iteration + 1, SumOfNumber + (iteration + 1) FROM calculate_SumOfNumber
WHERE iteration < 6 )
SELECT SumOfNumber FROM calculate_SumOfNumber
Hierarchical and Recursive Queries in SQL Server

มาฝึกกันเถอะ!

Hierarchical and Recursive Queries in SQL Server

Preparing Video For Download...