자료구조&알고리즘/백준
[백준 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번: 팩토리얼
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
www.acmicpc.net