Computer Science/Problem Solving(Algorithm)
BOJ 10872 - 팩토리얼
진뚱
2021. 6. 18. 08:11
728x90
https://www.acmicpc.net/problem/10872
10872번: 팩토리얼
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
www.acmicpc.net
재귀를 기본적으로 사용할 줄 아는지 확인하는 문제이다.
#include<stdio.h>
#include<iostream>
using namespace std;
int fact(int n)
{
if (n == 0)
{
return 1;
}
else return n * fact(n - 1);
}
int main()
{
int n;
scanf("%d", &n);
printf("%d\n",fact(n));
}
위와 같이 작성했다.
이 문제를 처음 제출 했을때는 에러가 발생했다.
int fact 함수에서 if(n==1)으로 설정해서 발생한 시간 초과였다. 생각도 못했는데 n==1으로 두게 되면 n==0인 경우에 문제가 발생한다. 멈추어 주는 조건이 없이 계속해서 -로 무한 루프를 타게 되기 때문에 시간초과가 발생했다.
728x90