Aan de slagGa gratis aan de slag

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! = 1 voor step = 0
  • (n+1)! = n! * (step+1) voor step > 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

Cursus bekijken

Oefeninstructies

  • Initialiseer de velden factorial en step op 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;
Code bewerken en uitvoeren