728x90
https://www.acmicpc.net/problem/10872
재귀를 기본적으로 사용할 줄 아는지 확인하는 문제이다.
#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 |
댓글