[백준] 10872번 팩토리얼 C++ 문제 풀이 함수
2019. 8. 29. 22:40ㆍ알고리즘/백준
728x90
반응형
문제
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 N(0 ≤ N ≤ 12)가 주어진다.
출력
첫째 줄에 N!을 출력한다.
예제 입력 1
10
예제 출력 1
3628800
문제 풀이
#include <iostream>
using namespace std;
int factorial(int n){
if(n > 2)
n *= factorial(n-1);
return n;
}
int main(void){
int num, result = 1;
cin>>num;
if(num!=0)
result = factorial(num);
cout<<result;
}
꽤나 애를 먹은 문제입니다. 반례를 찾다가 0 팩토리얼이 1이라는 사실을 깨닫고 result 부분에 미리 1을 넣어뒀습니다.
0이 아닐 경우 result는 새로운 값으로 초기화되므로 0팩토리얼은 1이 출력이 됩니다.
팩토리얼은 간단하게 재귀함수로 구현하였습니다. n이 2가 되면 더 이상 팩토리얼 함수를 타지 않고
재귀함수가 종료되도록 하였습니다. 2까지만 곱해도 상관없기 때문입니다.
0 팩토리얼이 1인 이유는 첨엔 이해가 되지 않았지만....
이 영상을 보고 나니 아~ 하고 이해가 좀 됐습니다. 참고하시기 바랍니다.
출처 : https://www.acmicpc.net/problem/10872
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1065번 한수 C++ 문제 풀이 함수 (0) | 2019.09.03 |
---|---|
[백준] 15596번 정수 N개의 합 C++ 문제 풀이 함수 (0) | 2019.09.02 |
[백준] 4673번 셀프 넘버 C++ 문제 풀이 함수 (0) | 2019.08.16 |
[백준] 4344번 평균은 넘겠지 C/C++ 문제 풀이 1차원배열 (0) | 2019.08.12 |
[백준] 8958번 OX퀴즈 C/C++ 문제 풀이 1차원배열 (0) | 2019.08.08 |