Как вычислить факториал числа 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;