본문 바로가기
Algorithm/Algorithm

C언어, 팩토리얼(factorial)

by OdOp 관리자 2023. 12. 11.
반응형

팩토리얼을 c언어로 구현해 보도록 하겠습니다. 

팩토리얼은 그 수보다 작거나 같은 모든 양의 정수의 곱입니다. 

예를 들어 4!은 1 * 2 * 3 * 4 즉, 24가 되겠죠.

그렇다면 n! = 1 * 2 * ..... * (n - 1) *n이 될것입니다. 

아래의 함수는 n을 nb라는 인자를 받아서 계산할 것입니다. 

 

재귀함수를 이용하지 않는 버전과 이용하는 버전 이렇게 2가지를 한번 살펴보도록 하겠습니다. 

우선 사용하지 않는 버전입니다. 

int    OdOp_iterative_factorial(int nb)
{
    int    answer;

    answer = 1;
    if (nb < 0)
        return (0);
    while (nb > 1)
    {
        answer *= nb;
        nb--;
    }
    return (answer);
}

 

재귀함수를 사용하는 버전입니다. 

void    OdOp_factorial(int *answer, int nb)
{
    *answer *= nb;
    if (nb >= 2)
        OdOp_factorial(answer, --nb);
}

int    OdOp_recursive_factorial(int nb)
{
    int    answer;

    answer = 1;
    if (nb < 0)
        return (0);
    else if (nb < 2)
        return (1);
    else
    {
        OdOp_factorial(&answer, nb);
    }
    return (answer);
}

 

하시는 프로젝트 잘 마무리 하시길 바랍니다. 

반응형

'Algorithm > Algorithm' 카테고리의 다른 글

C언어, 소수 판별하기  (0) 2023.12.13
C언어, 제곱근 구하기  (0) 2023.12.12
C언어, 거듭 제곱  (0) 2023.12.10
C언어, 피보나치 수열  (0) 2023.12.09
putnbr_base, 숫자를 진법으로 변환하기  (1) 2023.12.07