Bắt đầu ngayBắt đầu miễn phí

Cách truy vấn giai thừa của 6 bằng đệ quy

Ở bài trước, bạn đã truy vấn giai thừa 5! bằng cách lặp. Giờ bạn sẽ tính 6! theo cách đệ quy. Ta chia nhỏ bài toán thành các bài toán cùng kiểu để định nghĩa giai thừa n! một cách đệ quy. Có thể dùng định nghĩa sau:

  • 0! = 1 khi step = 0
  • (n+1)! = n! * (step+1) khi step > 0

Với định nghĩa đơn giản này, bạn có thể tính giai thừa của mọi số. Trong bài này, n! được biểu diễn bằng factorial.

Bạn sẽ tận dụng định nghĩa trên với sự hỗ trợ của CTE đệ quy.

Bài tập này là một phần của khóa học

Truy vấn phân cấp và đệ quy trong SQL Server

Xem khóa học

Hướng dẫn bài tập

  • Khởi tạo các trường factorialstep bằng 1.
  • Tính phần đệ quy với factorial * (step + 1).
  • Dừng quá trình đệ quy khi giá trị lặp hiện tại nhỏ hơn số giai thừa mục tiêu.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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;
Chỉnh sửa và Chạy Mã