Algorithm/Algorithm

C언어, 팩토리얼(factorial)

OdOp 관리자 2023. 12. 11. 10:00
반응형

팩토리얼을 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);
}

 

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

반응형