Beräkna fakulteten av 6 rekursivt
I den föregående övningen beräknade du fakulteten 5! med en iterativ lösning. Nu ska du beräkna 6! rekursivt. Vi delar upp problemet i mindre delproblem av samma typ för att definiera fakulteten n! rekursivt. Följande definition används:
0! = 1förstep = 0(n+1)! = n! * (step+1)förstep > 0
Med denna enkla definition kan du beräkna fakulteten för vilket tal som helst. I den här övningen representeras n! av factorial.
Du ska använda definitionen ovan med hjälp av ett rekursivt CTE.
Den här övningen är en del av kursen
Hierarkiska och rekursiva frågor i SQL Server
Övningsinstruktioner
- Initiera fälten
factorialochsteptill 1. - Beräkna den rekursiva delen med
factorial * (step + 1). - Avsluta rekursionen när det aktuella iterationsvärdet är mindre än målets fakultetstal.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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;