Как написать данную рекурсивную функцию - 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.
- Для данного кода верно утверждение, что: — Если базовый случай не выполняется, то рекурсия продолжается. — Если базовый случай выполняется, то рекурсия заканчивается.
- В данном коде нет никаких комментариев.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д