반응형
팩토리얼
수를 하나 입력 받아서 그 수의 팩토리얼을 계산하고, 출력하는 문제입니다.
#include<stdio.h>
int fac(int num) {
if (num == 0) {
return 1;
}
else {
return num * fac(num - 1);
}
}
int main() {
int num;
scanf("%d", &num);
printf("%d", fac(num));
}
별거 아니지만 직관적으로 보자마자 이해되지 않고 괜히 신기했기 때문에 잊지 않으려고 써봅니다.
팩토리얼을 계산하는 함수와 그 함수를 실행하는 메인함수로 구성되어 있습니다.
처음에, fac(num-1)을 곱하는게 무슨의미가 있지? 리턴값이 마지막 1밖에 없는데? 라는 생각이 들었지만 함수를 찬찬히 뜯어보자.
num 에 5를 넣으면, num이 5가 아니니 5*fac(5-1) 즉 5*fac(4)가된다.
fac(4)==4*fac(3)
fac(3)==3*fac(2)
fac(2)=2*1 이므로,
5*4*3*2*1이 되어서 5!이 맞다.
반응형
'data lab' 카테고리의 다른 글
C++ 재귀 이진 검색 (Recursive binary search) - 대학교 컴공 2학년 자료구조 과목 (0) | 2023.10.24 |
---|---|
C++ 이진 검색(binary search)이란 무엇일까? - 대학교 컴공 2학년 자료구조 과목 (0) | 2023.10.23 |
C++ 선택정렬 (selection sort)이란 무엇일까? - 대학교 컴공 2학년 자료구조 과목 (0) | 2023.10.22 |
23년 9월 22일 사업을 시작했습니다. (0) | 2023.09.28 |
운동 2년차 헬린이를 위한 벌크업과 다이어트, 식단 구성방법 (0) | 2023.09.18 |