자료구조&알고리즘/백준

[백준 c 10872] 팩토리얼

celinayk 2022. 11. 7. 21:26
반응형

문제

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

 

입력

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

 

출력 

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

접근

이 문제는 간단하게 반복문으로 풀 수 도 있지만 재귀함수를 이용해서 구현하라고 했으므로 재귀함수를 이용한다.

 

재귀함수(, Recursion)는 정의 단계에서 자신을 재참조하는 함수를 뜻한다.

어떤 사건이 자신을 포함하고 다시 자기 자신을 사용하여 정의될 때 재귀적(recursive)이라고 한다. 일단 무언가를 설명할 때 자기를 포함한 것이라고 이해하면 편하다.

재귀함수를 처음 본다면 이해가 잘 안될 수도 있다. 함수 안에 함수가 또 들어있는 형태이다.

[C언어_14] 재귀함수의 개념과 공부하는 이유 (tistory.com)

 

[C언어_14] 재귀함수의 개념과 공부하는 이유

안녕하세요, 이번 포스팅에서는 지난 강좌에서 배웠던 사용자 정의 함수 개념의 심화적인 내용을 배울 것입니다. 바로 "재귀함수"라는 것인데요, 오늘 이것을 배우는 이유와 그 개념에 대해서

swdoodle.tistory.com

이 분의 블로그 글을 참고하면 이해가 쉬울것같다. 나도 이분의 그림덕에 이해가 잘 되었다.

 

코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int data(int n) {
	if (n > 1) {
		return n * data(n - 1);
	}
	else {
		return 1;
	}
}


int main() {
	
	int n;
	scanf("%d", &n);
	printf("%d\n", data(n));

	return 0;
}

 

리뷰

data함수부분을 보면 else에 재귀함수 종료 조건이 있다. 이 종료 조건이 없으면 재귀함수는 계속 무한반복 된다. 종료조건은 필수다

 

 

학습

재귀함수는 잘 안써서 까먹을뻔 했는데 다시 기억이 났다!

 

출처

10872번: 팩토리얼 (acmicpc.net)

 

10872번: 팩토리얼

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

www.acmicpc.net