Giken Dev
반응형

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

 

10872번: 팩토리얼

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

www.acmicpc.net

문제

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

입력

첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.

출력

첫째 줄에 N!을 출력한다.

 

 

/*
https://www.acmicpc.net/problem/10872
*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int factorial(int n) {
	if (n == 0) {
		return 1;
	}else {
		return n * factorial(n - 1);
	}
}

int main() {
	int N;
	scanf("%d", &N);

	printf("%d\n", factorial(N));
}

 

재귀함수인 factorial() 을 반복하여 원하는 return 값을 구할 수 있었습니다.

ex) factorial(3) 일 때

factorial(3) = 3 * factorial(2) * factorial(1)

              =  3 * 2 * factorial(1)

              = 3 * 2 * 1 

 

주의해야할 점

1. n == 0 일 때 return 1로 탈출해야합니다. (무한루프 방지)

 

위의 무한루프 방지를 하지 않는다면 

-> factorial(3) = 3 * factorial(2) * factorial(1) * factorial(0) * factorial(-1) * factorial(-2) * ~~~~~~

factorial(음수)  가 개념적으로 존재하지 않을 뿐 더러, 우변의 곱이 무한반복 되게 됩니다.

 

반응형
profile

Giken Dev

@기켄

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!