본문 바로가기

카테고리 없음

[C/알고리즘] Factorial 팩토리얼 구하기

#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