Рекуррентно возвести в степень - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ребята подскажите как поднести в степень без pow (рекуррентно) в рекурсивной функции, которая обчисливает а - это х из формулы, а х изначально = -1
double recur(double a, double x) 
{
    double f = 1;
    x = x + 2;
    f = pow(a, x);
    return fabs(f / x) <= eps ? (f / x) : (f / x) + recur(a, x);

}

Решение задачи: «Рекуррентно возвести в степень»

textual
Листинг программы
const double eps = 0.000001;
double f(double x, double ch, double zn)
{
    if(fabs(ch / zn) < eps) return 0;
    return ch / zn + f(x, ch * x * x, zn + 2);
}

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

  1. В начале кода объявляются три константы: eps (маленькое число, которое используется для определения, когда нужно прекратить рекурсию), x (переменная, которую нужно возвести в степень) и ch (переменная, которая будет использоваться в формуле возведения в степень).
  2. Затем определена функция f(double x, double ch, double zn), которая принимает три аргумента: x, ch и zn.
  3. Внутри функции происходит проверка условия: если значение ch деленное на zn меньше заданной точности eps, то функция возвращает 0.
  4. Если условие не выполняется, то функция рекурсивно вызывает саму себя, передавая в качестве аргументов x, ch и zn+2.
  5. Результатом работы функции является сумма значения ch деленного на zn и результата рекурсивного вызова функции.
  6. В конце кода вызывается функция f(x, ch, zn) с заданными значениями аргументов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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