Zacznij terazZacznij za darmo

Jak rekurencyjnie obliczyć silnię z 6

W poprzednim ćwiczeniu obliczyłeś silnię 5! przy użyciu rozwiązania iteracyjnego. Teraz obliczysz 6! rekurencyjnie. Aby zdefiniować silnię n! rekurencyjnie, rozkładamy problem na mniejsze problemy tego samego typu. Można do tego użyć następującej definicji:

  • 0! = 1 dla step = 0
  • (n+1)! = n! * (step+1) dla step > 0

Dzięki tej prostej definicji możesz obliczyć silnię dowolnej liczby. W tym ćwiczeniu n! jest reprezentowane przez factorial.

Wykorzystasz powyższą definicję za pomocą rekurencyjnego CTE.

To ćwiczenie jest częścią kursu

Hierarchiczne i rekurencyjne zapytania w SQL Server

Zobacz kurs

Instrukcje do ćwiczenia

  • Zainicjalizuj pola factorial i step wartością 1.
  • Oblicz część rekurencyjną za pomocą wyrażenia factorial * (step + 1).
  • Zatrzymaj proces rekurencji, gdy wartość bieżącej iteracji jest mniejsza od docelowego numeru silni.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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;
Edytuj i uruchom kod