반응형
거듭 제곱을 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 |