백준 10872 : 팩토리얼
문제 링크
https://www.acmicpc.net/problem/10872
문제 내용
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
Idea
팩토리얼을 구하기 위해서는 두가지 방법이 있다.
- 반복문을 사용하여 N까지 곱하기
- 재귀함수를 사용하여 구하기
N!의 값은 N*(N-1)! 임을 이용하여 재귀 함수 수식을 작성한다.
재귀함수를 사용할 때는 아래와 같이 수식을 적어두고 코딩하면 편하다.
Code
1) 재귀X
1
2
3
4
5
6
7
8
9
10
|
#include <stdio.h>
int main() {
int N, fact = 1;
scanf("%d", &N);
for (int i = 2; i <= N; i++)
fact *= i;
printf("%d\n", fact);
return 0;
}
|
cs |
2) 재귀 함수 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <stdio.h>
int fact(int n) {
if (n > 1)
return n * fact(n - 1);
else return 1;
}
int main() {
int N;
scanf("%d", &N);
printf("%d\n", fact(N));
return 0;
}
|
cs |
'백준 Baekjoon' 카테고리의 다른 글
[C언어] 백준 1568 : 새 (0) | 2020.08.14 |
---|---|
[C언어] 백준 10870 : 피보나치 수 5 (0) | 2020.08.14 |
[C++] 백준 1920 : 수 찾기 (0) | 2020.08.06 |
[JAVA] 백준 1822 : 차집합 (0) | 2020.08.02 |
[C언어] 백준 2577 : 숫자의 개수 (0) | 2020.07.30 |