숫자 n이 주어졌을 때, 이 숫자의 팩토리얼(계승)을 구하는 것이 과제입니다. 팩토리얼은 해당 숫자를 그보다 작거나 같은 정수 값들과 차례대로 곱하여 계산합니다.
팩토리얼은 다음과 같이 계산됩니다.
0! = 1 1! = 1 2! = 2X1 = 2 3! = 3X2X1 = 6 4! = 4X3X2X1 = 24 5! = 5X4X3X2X1 = 120 . . . N! = n * (n-1) * (n-2) * . . . . . . . . . * 1
예시
입력 1 -: n=5 출력 : 120 입력 2 -: n=6 출력 : 720
팩토리얼을 구하는 방법은 여러 가지가 있습니다.
- 반복문(loop)을 사용하는 방법
- 재귀(recursion)를 사용하는 방법 — 효율성 측면에서는 권장되지 않음
- 함수(function)를 사용하는 방법
아래는 함수를 활용한 구현 예시입니다.
알고리즘
Start Step 1 -> 팩토리얼을 계산할 함수 선언 int factorial(int n) IF n = 0 return 1 End return n * factorial(n - 1) Step 2 -> main() 함수에서 변수를 int num = 10 으로 선언 factorial(num)) 출력 Stop
C 언어 구현
예시 코드
#include<stdio.h>
// 팩토리얼을 구하는 함수
int factorial(int n){
if (n == 0)
return 1;
return n * factorial(n - 1);
}
int main(){
int num = 10;
printf("%d의 팩토리얼은 %d입니다", num, factorial(num));
return 0;
}실행 결과
10의 팩토리얼은 3628800입니다
C++ 구현
예시 코드
#include<iostream>
using namespace std;
// 팩토리얼을 구하는 함수
int factorial(int n){
if (n == 0)
return 1;
return n * factorial(n - 1);
}
int main(){
int num = 7;
cout << num << "의 팩토리얼은 " << factorial(num) << endl;
return 0;
}실행 결과
7의 팩토리얼은 5040입니다
위 예제에서 사용된 재귀 함수는 n이 0이 될 때까지 자기 자신을 호출하며 곱셈을 수행합니다. 재귀 방식은 코드가 간결하지만, 호출 스택을 반복적으로 사용하기 때문에 큰 숫자에 대해서는 성능 저하가 발생할 수 있다는 점을 유의해야 합니다.