เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

วิธีคิวรีค่า 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;
แก้ไขและรันโค้ด