Как написать данную рекурсивную функцию - C (СИ)

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

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

Доброго времени суток, уважаемые форумчани! Первый раз пишу на форумах. Столкнулся на довольно таки сложную тему - рекурсию, точнее сам принцип рекурсия понятен, могу написать функцию вычисления числа фибоначи, возведения в степень и многое другое. НО, возникла проблема с таким зданием, помогите пожалуйста. Спасибо заранее!

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

textual
Листинг программы
#include <stdio.h>
 
int Foo(const int x, const int y, const int n)
{
    return n ? (x - y) * (x - y) + Foo(3 * x, x + y, n - 1) : 0;
}
 
int main(void)
{
    printf("%d", Foo(1, 1, 4));
    return 0;
}

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

Вывод на экран числа 9. Код вычисляет значение функции Foo(1,1,4) и выводит его на экран.

  • Формула для вычисления значения функции Foo(x,y,n): (x — y) (x — y) + Foo(3 x, x + y, n — 1)
  • Что означает рекурсивная функция: функция, которая вызывает сама себя.
  • Что означает базовый случай: условие, при котором функция прекращает рекурсию и начинает решать задачу вручную.
  • В данном коде базовый случай: n == 0.
  • Для данного кода верно утверждение, что: — Если базовый случай не выполняется, то рекурсия продолжается. — Если базовый случай выполняется, то рекурсия заканчивается.
  • В данном коде нет никаких комментариев.

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


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

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

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