So fragst du die Fakultät von 6 rekursiv ab
In der letzten Übung hast du die Fakultät 5! mit einer iterativen Lösung berechnet. Jetzt berechnest du 6! rekursiv. Wir zerlegen das Problem in kleinere Probleme desselben Typs, um die Fakultät n! rekursiv zu definieren. Dafür kann folgende Definition verwendet werden:
0! = 1fürstep = 0(n+1)! = n! * (step+1)fürstep > 0
Mit dieser einfachen Definition kannst du die Fakultät jeder Zahl berechnen. In dieser Übung wird n! durch factorial dargestellt.
Du nutzt die obige Definition mithilfe eines rekursiven CTE.
Diese Übung ist Teil des Kurses
Hierarchische und rekursive Abfragen in SQL Server
Anleitung zur Übung
- Initialisiere die Felder
factorialundstepmit 1. - Berechne den rekursiven Teil mit
factorial * (step + 1). - Beende die Rekursion, wenn der aktuelle Iterationswert kleiner als die gewünschte Fakultätszahl ist.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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;