반응형
https://www.acmicpc.net/problem/10872
문제
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 팩토리얼*/
반응형