본문 바로가기
Algorithm/Algorithm

C언어, 거듭 제곱

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

거듭 제곱을 c언어로 구현을 해보도록 하겠습니다. 

예를 들어 2의 3제곱 또는 2의 3승은 2를 3번 곱하는 것입니다. 즉, 2 * 2 * 2 = 8이 되겠죠. 이때, 2가 밑이고 3이 지수입니다. 

아래의 함수에서는 밑을 nb라는 인자로 지수를 power이라는 인자로 사용하고 있습니다. 

 

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

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

int    OdOp_iterative_power(int nb, int power)
{
    long long    answer;

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

자료형 long long을 사용한 이유는 제곱을 하다가 int자료형을 넘어갈 수도 있을 것 같아서 long long자료형을 사용했습니다. 

 

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

void    OdOp_nb_power(long long *answer, long long nb, int power)
{
    if (power > 0)
    {
        *answer *= nb;
        power--;
        ft_nb_power(answer, nb, power);
    }
}

int    OdOp_recursive_power(int nb, int power)
{
    long long    answer;

    if (power == 0)
        return (1);
    else if (power < 0 || nb == 0)
        return (0);
    answer = 1;
    OdOp_nb_power(&answer, (long long)nb, power);
    return (answer);
}

 

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

반응형

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

C언어, 제곱근 구하기  (0) 2023.12.12
C언어, 팩토리얼(factorial)  (0) 2023.12.11
C언어, 피보나치 수열  (0) 2023.12.09
putnbr_base, 숫자를 진법으로 변환하기  (1) 2023.12.07
특정 진법 정수로 바꾸기  (1) 2023.12.05