Переделать код, что бы в нем применялась рекурсивная функция для возведения числа в степень - 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.
- Результат возвращается из функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д