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! = 1dlastep = 0(n+1)! = n! * (step+1)dlastep > 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
Instrukcje do ćwiczenia
- Zainicjalizuj pola
factorialistepwartoś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;