Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Initiera fälten factorial och step till 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;
Redigera och kör kod