알고리즘 & 자료구조/코딩테스트

[baekjoon] 10872번 팩토리얼 (재귀)

인디아나쥰이 2021. 1. 25. 19:13

문제

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

입력

첫째 줄에 정수 N(0 ≤ N ≤ 12)가 주어진다.

출력

첫째 줄에 N!을 출력한다.

예제 입력 1 복사

10

예제 출력 1 복사

3628800

예제 입력 2 복사

0

예제 출력 2 복사

1

 

 


필요한 개념

 

팩토리얼 :  서로 다른 n개를 나열하는 경우의 수를 의미, 기호로는 n!

 

계산은..

n! = n(n-1)(n-2)(n-3)...1

 1이 될때 까지 모든수를 곱해준다.

 

 

※ 0! 은 1 이다 

 

ex) 

4! = 4 x 3 x 2 x 1

    = 4  x (4-1)!

    = 4  x 3!

 

따라서

 

1! = 1 x (1-1)!

1! = 1  x 0!     =>>  1 = 1 x 0! 이므로 0!은 1 이 된다.

 

* a! = (a-1)! x a

 


소스 코드

 

#include <iostream>
using namespace std;
int factorial(int n){
    if (n <= 1)
		return 1;
	else
		return n * factorial(n - 1);
}        
int main(void){
    int num;
    cin >> num;
    cout << factorial(num);
}
728x90
반응형