Zo vraag je recursief de faculteit van 6 op
In de vorige oefening heb je de faculteit 5! opgevraagd met een iteratieve oplossing. Nu ga je 6! recursief berekenen. We herleiden het probleem tot kleinere problemen van hetzelfde type om de faculteit n! recursief te definiëren. Daarvoor kun je de volgende definitie gebruiken:
0! = 1voorstep = 0(n+1)! = n! * (step+1)voorstep > 0
Met deze eenvoudige definitie kun je de faculteit van elk getal berekenen. In deze oefening wordt n! weergegeven door factorial.
Je gaat de bovenstaande definitie toepassen met behulp van een recursieve CTE.
Deze oefening maakt deel uit van de cursus
Hiërarchische en recursieve queries in SQL Server
Oefeninstructies
- Initialiseer de velden
factorialenstepop 1. - Bereken het recursieve deel met
factorial * (step + 1). - Stop het recursieproces wanneer de huidige iteratiewaarde kleiner is dan het doel-faculteitgetal.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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;