Функция возведения в степень через рекурсию - 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
}

Объяснение кода листинга программы

  1. Входные данные функции: a (переменная типа double) - основание степени b (переменная типа int) - показатель степени Возвращаемое значение: результат возведения в степень
  2. Проверка показателя степени b. Если b > 0, то вызывается рекурсивная функция с аргументами a и b-1. Результат перемножается на a и возвращается.
  3. Если b < 0, то вызывается рекурсивная функция с аргументами a и -b. Результат рекурсивного вызова делится на полученное значение и возвращается.
  4. Если b = 0, то возвращается 1.
  5. В остальных случаях происходит рекурсивный вызов функции с аргументами a и b-1.

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы