본문 바로가기

[C언어] 백준온라인/* 재귀

[C 언어] 백준 10872. 팩토리얼


10872. 팩토리얼 (누르면 해당 문제로 이동)

팩토리얼은 단순 for문으로도 구할 수 있지만, 학습을 위해 재귀를 써 봅시다.

 

제약사항)

시간 : 1 초

메모리 : 256 MB

 

문제)

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

 

입력)

첫째 줄에 정수 N(0<=N<=12)가 주어진다.

 

출력)

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

 

입출력 예제

입력 출력
10 3628800

 


 

풀이 순서)

재귀함수의 가장 기본이 되는 문제입니다.

1. N을 입력받아 N*(N-1) 을 N이 1이 될 때 까지 재귀함수를 이용해 계산하면 됩니다.

2. 1! 과 0! 은 값이 1이기 때문에 N이 1보다 클 때에는 N*(N-1)을, 1 또는 0일 경우에는 1을 반환하여 계산하면 됩니다.

 


 

소스코드 및 결과 (C)

#include <stdio.h>

int fact(int num) {
	if (num > 1)
		return num*fact(num - 1);
	else
		return 1;
}

int main() {
	int N;

	scanf("%d", &N);
	printf("%d\n", fact(N));

	return 0;
}

 

메모리 : 1112 KB

시간 : 0 ms

코드길이 : 182 B