LoslegenKostenlos starten

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

<Kurs>Hierarchische und rekursive Abfragen in SQL Server</Kurs>
Kurs ansehen

Übungsanweisungen

  • Initialisiere die Felder factorial und step mit 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 praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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 bearbeiten und ausführen