#include <stdio.h>
// 팩토리알을 구하는 함수. 30! 만 되어도 엄청나게 큰 숫자이기 때문에
// 자료형을 unsigned long long으로 바꾸어도 한계가 있다.
// 16바이트인 long double을 사용한다. 출력시 %Lf 서식 지정자를 사용한다.
long double factorialLoop(int n) {
int i = 1;
long double mult = 1;
for (i = 1; i <= n; i++) {
mult = mult * i;
}
return mult;
}
// 재귀호출로 팩토리알을 구하는 함수
long double factoricalR(int n) {
if (n==1) return 1;
return factoricalR(n-1) *n;
}
int main() {
int num = 100;
printf("%d! = %Lf\n", num, factoricalR (num )); //4 * 3 * 2 * 1
printf("%d! = %Lf\n", num, factorialLoop (num));
return 0;
}
---------------출력 결과-------------
100! = 93326215443944152638794559865674755492198008588591912695446327057475410739667358279337083640500903674397991236655991540282944112877360209308025154088724332544.000000
100! = 93326215443944152638794559865674755492198008588591912695446327057475410739667358279337083640500903674397991236655991540282944112877360209308025154088724332544.000000
카테고리 없음