백준 Baekjoon

[C언어] 백준 10872 : 팩토리얼

sujo 2020. 8. 14. 16:59

백준 10872 : 팩토리얼

 

문제 링크

https://www.acmicpc.net/problem/10872

 

10872번: 팩토리얼

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

 

문제 내용

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

 

 

Idea

팩토리얼을 구하기 위해서는 두가지 방법이 있다.

  1. 반복문을 사용하여 N까지 곱하기
  2. 재귀함수를 사용하여 구하기

 

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