Функция возведения в степень через рекурсию - C (СИ)
Формулировка задачи:
Написал функцию возведения в степень для положительных чисел, но, к сожалению, не до конца понял, как она осуществляет подсчет. Правильно ли я понимаю, что счет начинается, когда b становится равной единице? Если это так, то а умножается на выражение power(a,b-1), но каким образом происходит вычисление в этой точке?
double power(float a, int b) { int i = b; float k = 1; if (b > 0) { k=a*power(a, b-1); } return k; }
power(a, b-1) при b = 1 принимает значение 1? и дальше рекурсия идет вверх, домножаясь на а каждый раз? по какой причине функция при последнем вызове принимает такое значение? (если это рассуждение верно).
Решение задачи: «Функция возведения в степень через рекурсию»
textual
Листинг программы
double power(double a, int b) { if (b > 0) return a*power(a, b-1); if (b < 0) return 1.0 / power(a, -b); return 1; // if b == 0 }
Объяснение кода листинга программы
- Входные данные функции: a (переменная типа double) - основание степени b (переменная типа int) - показатель степени Возвращаемое значение: результат возведения в степень
- Проверка показателя степени b. Если b > 0, то вызывается рекурсивная функция с аргументами a и b-1. Результат перемножается на a и возвращается.
- Если b < 0, то вызывается рекурсивная функция с аргументами a и -b. Результат рекурсивного вызова делится на полученное значение и возвращается.
- Если b = 0, то возвращается 1.
- В остальных случаях происходит рекурсивный вызов функции с аргументами a и b-1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д