본문 바로가기
Computer Science/Problem Solving(Algorithm)

BOJ 10872 - 팩토리얼

by 진뚱 2021. 6. 18.
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

'Computer Science > Problem Solving(Algorithm)' 카테고리의 다른 글

[STL] Unordered_Map  (0) 2021.11.29
Bit 연산  (0) 2021.11.22
<BOJ> 팩토리얼 (10872)  (0) 2021.03.31
< BOJ > 9934 - 완전 이진 트리  (0) 2019.06.06
< BOJ > 2571 - 색종이-3  (0) 2019.06.04

댓글