วิธีคิวรีค่า factorial ของ 6 แบบ recursive
ในแบบฝึกหัดที่ผ่านมา คุณได้คิวรีค่า factorial 5! ด้วยวิธี iterative ไปแล้ว คราวนี้จะมาคำนวณ 6! แบบ recursive กันบ้าง แนวคิดคือการแบ่งปัญหาออกเป็นปัญหาย่อยที่มีรูปแบบเดียวกัน เพื่อนิยาม factorial n! แบบ recursive โดยใช้นิยามต่อไปนี้:
0! = 1สำหรับstep = 0(n+1)! = n! * (step+1)สำหรับstep > 0
ด้วยนิยามง่าย ๆ นี้ สามารถคำนวณค่า factorial ของทุกจำนวนได้ ในแบบฝึกหัดนี้ n! จะแทนด้วย factorial
นำนิยามข้างต้นไปใช้งานโดยอาศัย recursive CTE
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Hierarchical and Recursive Queries in SQL Server
คำแนะนำการฝึกหัด
- กำหนดค่าเริ่มต้นของฟิลด์
factorialและstepเป็น 1 - คำนวณส่วน recursive ด้วย
factorial * (step + 1) - หยุดกระบวนการ recursion เมื่อค่า iteration ปัจจุบันน้อยกว่าค่า factorial ที่ต้องการ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
WITH calculate_factorial AS (
SELECT
-- Initialize step and the factorial number
___ AS step,
___ AS factorial
UNION ALL
SELECT
step + 1,
-- Calculate the recursive part by n!*(n+1)
___ * (step + 1)
FROM calculate_factorial
-- Stop the recursion reaching the wanted factorial number
WHERE step < ___)
SELECT factorial
FROM calculate_factorial;