재귀적으로 6의 팩토리얼을 쿼리하는 방법
이전 연습 문제에서는 반복적 방법으로 팩토리얼 5!를 구했어요. 이제는 6!을 재귀적으로 계산해 보겠습니다. 같은 유형의 더 작은 문제로 나누어 팩토리얼 n!을 재귀적으로 정의할 수 있어요. 다음과 같이 정의합니다:
step = 0일 때0! = 1step > 0일 때(n+1)! = n! * (step+1)
이 간단한 정의로 모든 수의 팩토리얼을 계산할 수 있습니다. 이 연습에서는 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;