Як рекурсивно обчислити факторіал 6
У попередній вправі ви обчислювали факторіал 5! ітеративним способом. Тепер ви обчислите 6! рекурсивно. Ми зведемо задачу до менших підзадач того самого типу й рекурсивно визначимо факторіал n!. Для цього використаємо таке означення:
0! = 1дляstep = 0(n+1)! = n! * (step+1)дляstep > 0
За цим простим означенням можна обчислити факторіал будь-якого числа. У цій вправі n! позначено як factorial.
Ви застосуєте наведене вище означення за допомогою рекурсивної CTE.
Ця вправа є частиною курсу
Ієрархічні та рекурсивні запити в SQL Server
Інструкції до вправи
- Ініціалізуйте поля
factorialіstepзначенням 1. - Обчисліть рекурсивну частину як
factorial * (step + 1). - Зупиніть рекурсію, коли поточне значення ітерації менше за цільове число факторіала.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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;