Переделать код, что бы в нем применялась рекурсивная функция для возведения числа в степень - C (СИ)
Формулировка задачи:
Здравствуйте, помогите пожалуйста переделать код, что бы в нем применялась рекурсивная функция для возведения в степень
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <ctype.h>
double power(double a, int b);
int main()
{
setlocale(LC_CTYPE, "Russian");
double x,xpow;
int n;
printf("Введите число и целую степень,");
printf ("в которую\nчисло будет возведено. Для завершения программы");
printf ( " введите q.\n");
while (scanf("%lf%d", &x, &n) == 2)
{
xpow = power(x,n); // вызов функции
printf ( "%.3g в степени %d равно %.5g\n", x, n, xpow);
printf("Введите следующую пару чисел или q для завершения.\n");
}
printf("Bye!");
getchar();return 0;}
double power(double a, int b)
{ double pow = 1;
int i;
if(b==0)
{if(a==0)
printf("Результат возведения в степень 0 не определен, используем значение 1;\n");
pow=1.0;
}
else if (a==0)
pow=0.0;
else if (b>0)
for(i=1;i<=b;i++)
pow*=a;
else
pow=1.0/power(a,-b);
return pow;
}Решение задачи: «Переделать код, что бы в нем применялась рекурсивная функция для возведения числа в степень»
textual
Листинг программы
double p=power(a,n/2); p*=p; if (n%2) return a*p; return p;
Объяснение кода листинга программы
- Входные данные: a - число, n - число.
- Используется функция power(a, n/2), которая возводит a в степень n/2.
- Результат возведения в степень умножается на себя.
- Если n нечетное, то результат умножается на a.
- Результат возвращается из функции.