開始使用免費開始

如何以遞迴方式查詢 6 的階乘

在上一個練習中,你用「反覆運算」的方法查詢了 5!。現在,你要用「遞迴」來計算 6!。我們把問題拆成同類型的更小問題,來遞迴定義階乘 n!。可以使用下列定義:

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

用這個簡單的定義,你可以計算任何數字的階乘。在本練習中,n!factorial 表示。

你將透過遞迴 CTE,套用上述定義。

本練習屬於課程

SQL Server 的階層式與遞迴查詢

檢視課程

練習說明

  • factorialstep 兩個欄位初始化為 1。
  • factorial * (step + 1) 計算遞迴部分。
  • 當目前迭代值小於目標的階乘數時,停止遞迴處理。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

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;
編輯並執行程式碼