음이 아닌 정수 n의 팩토리얼(계승)은 n보다 작거나 같은 모든 양의 정수를 곱한 값입니다.
예를 들어, 6의 팩토리얼은 다음과 같이 계산됩니다.
6! = 6 × 5 × 4 × 3 × 2 × 1 6! = 720
정수의 팩토리얼은 크게 두 가지 방법, 즉 재귀(recursion)를 사용하는 방법과 반복(iteration)을 사용하는 방법으로 구할 수 있습니다. 이 글에서는 후자인 반복 방식을 살펴보겠습니다.
for 반복문을 활용한 팩토리얼 계산
반복 프로그램에서는 for 루프를 사용하여 숫자의 팩토리얼을 손쉽게 구할 수 있습니다. 아래 예제를 통해 확인해 보겠습니다.
예제 코드
#include <iostream>
using namespace std;
int main() {
int n = 6, fact = 1, i;
for(i=1; i<=n; i++)
fact = fact * i;
cout<<"Factorial of "<< n <<" is "<<fact;
return 0;
}실행 결과
Factorial of 6 is 720
코드 동작 원리
위 프로그램에서 for 루프는 변수 i가 1부터 n까지 증가하며 반복 실행됩니다. 루프가 한 번 돌 때마다 현재까지 누적된 값 fact에 i가 곱해집니다. 핵심 로직은 다음 코드 조각과 같습니다.
for(i=1; i<=n; i++) fact = fact * i;
루프가 종료되는 시점에는 fact에 1부터 n까지의 모든 정수를 곱한 최종 결과가 저장되어 있으므로, 이것이 바로 n의 팩토리얼입니다.
참고 사항
팩토리얼 값은 숫자가 커질수록 기하급수적으로 빠르게 증가합니다. 예를 들어 13!부터는 int형(32비트)의 표현 범위를 초과하므로, 더 큰 수의 팩토리얼을 계산하려면 long long 같은 더 넓은 범위의 자료형을 사용하는 것이 좋습니다.