반응형
팩토리얼을 재귀함수로 구현하는 문제였다.
처음에 구현하고 나서 자꾸 시간초과가 떠서 뭐지 싶었다.
정답아님 (시간초과 뜬 코드)
#include <stdio.h>
int facto(int m) {
if(m==1)
return 1;
else
return m*facto(m-1);
}
int main() {
int N;
scanf("%d", &N);
printf("%d", facto(N));
}
뭘까 싶었는데, 입력값이 0부터였다. 그래서 0에 대해서도 처리해줘야 했는데 내가 처리를 안해버렸으므로 포문이 끝나지 않는것.....
그래서 입력이 0일 때에도 다뤄야 한다는 점은 알겠는데, 0팩토리얼이 몇인지 모르겠어서 네이버 검색해봤다.
몰랐는데, 0팩토리얼은 1이랜다.
0! =1 이라는거임... 왠진모르겠음. 무슨 감마함수 어쩌구..나와있는데 수포자인 나는 알 수 없는 영역.
간단한 설명으로는
a! = a*(a-1)! 이므로
1! = 1*(0!) 인데, 1팩토리얼은 1이 되야 하므로 0!은 1이라는 것..
그냥 외울래. 여튼 덕분에 코드에 적용하기는 간단했음. m==1이 아니라 m<=1로 바꿔줬음
정답
#include <stdio.h>
int facto(int m) {
if(m<=1)
return 1;
else
return m*facto(m-1);
}
int main() {
int N;
scanf("%d", &N);
printf("%d", facto(N));
}
반응형
'[백준]' 카테고리의 다른 글
[BaekJoon/백준] 2447번 (0) | 2020.09.26 |
---|---|
[BaekJoon/백준] 10870번 (0) | 2020.09.23 |
[BaekJoon/백준] 3053번 (0) | 2020.09.22 |
[BaekJoon/백준] 3009번 (0) | 2020.09.22 |
[BaekJoon/백준] 1085번 (0) | 2020.09.21 |