如何以遞迴方式查詢 6 的階乘
在上一個練習中,你用「反覆運算」的方法查詢了 5!。現在,你要用「遞迴」來計算 6!。我們把問題拆成同類型的更小問題,來遞迴定義階乘 n!。可以使用下列定義:
- 當
step = 0,0! = 1 - 當
step > 0,(n+1)! = n! * (step+1)
用這個簡單的定義,你可以計算任何數字的階乘。在本練習中,n! 以 factorial 表示。
你將透過遞迴 CTE,套用上述定義。
本練習屬於課程
SQL Server 的階層式與遞迴查詢
練習說明
- 將
factorial與step兩個欄位初始化為 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;