반응형

 

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

 

10872번: 팩토리얼

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

www.acmicpc.net

문제

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

입력

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

출력

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

 

예제 입력 1 
10

예제 출력 1 
3628800

예제 입력 2 
0

예제 출력 2 
1

풀이 

N!은 N=3일 경우 3*2*1로 표시된다. 

 

예를 들어서 N=3일 경우 어떻게 진행되는지 확인 해 보자.

factorial 함수에 n=3이 전달 되면 아래와 같이 값들이 입력이 될 것이다. 

3*factorial(3-1)

n-1이므로 n=2가 전달되어서 아래와 같이 되고 

3*2*factorial(2-1)

마지막으로 n=1이 전달되면 더이상 factorial함수가 재귀로 호출되지 않고 return 1이 호출되어서 아래 값이 계산되어서 return됨.

3*2*1

최종 출력값은 6이다. 

 

[소스 코드]

/*baekjoon 10872 팩토리얼*/
#include <bits/stdc++.h>
using namespace std;
int N;
int factorial(int n)
{
    if(n > 1)
        return n*factorial(n-1);
    else
        return 1;
}
void InputData(){
    cin >> N;
}
int main()
{
    InputData();
    cout <<  factorial(N) ;
    return 0;
}
/*baekjoon 10872 팩토리얼*/

 

 

반응형

+ Recent posts