Функция возведения в степень через рекурсию - 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;
}
Добавлено через 4 минутыpower(a, b-1) при b = 1 принимает значение 1? и дальше рекурсия идет вверх, домножаясь на а каждый раз? по какой причине функция при последнем вызове принимает такое значение? (если это рассуждение верно).

Код к задаче: «Функция возведения в степень через рекурсию - C (СИ)»

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
}

5   голосов, оценка 4.200 из 5


СОХРАНИТЬ ССЫЛКУ