본문 바로가기

카테고리 없음

[백준] 팩토리얼 10872번

1.문제 : 출력

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

2.문제 풀이

#include <stdio.h>
int sum(int num){
if (num == 0)return 1;
else	return num * sum(num - 1);
}

int main() {
int n;
scanf("%d", &n);
/*while (n < 0 || n>12) {
	printf("다시입력:");
	scanf("%d", &n);
}*/
sum(n);

printf("%d\n", sum(n));

return 0;
}

3.문제 풀이

위에 재귀 함수로 넣은수만큼 곱하는 재귀함수를 만들었고 주석 처리를 했지만 저 주석처리를 한 부분은 n의 값을 0부터 12까지 받고 그게 아니라면 다시 받는 while문을 만들었다 핵심?이라고 생각하는 것은 재귀함수에서 if(num==0)을 의미하면 1을 반환하는 것을 함으로써 0일 떄 0!이 1이고 1일 때는 else에서 알아서 1이 나오기 떄문에 이부분 조건을 잘 정해줘야 한다 그리고 (num<1)로해도 가능

 

https://www.acmicpc.net/problem/10872