Подскажите где ошибка (рекурсивная функция) - C (СИ)
Формулировка задачи:
Не работают последних два условия.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <math.h> int fun(int a); int main() { int x; printf("Enter x: "); scanf("%d", &x); printf("%d\n", fun(x)); return 0; } int fun(int a) { int f; unsigned int k = 5; if (a == 4 * k + 3) f = 9; else if (a < 7) f = pow(fun(abs(a - 1) - 2), 2); else if (a != 4 * k + 3) f = log(a - 2) / fun(a - 1); return f; }
Решение задачи: «Подскажите где ошибка (рекурсивная функция)»
textual
Листинг программы
int fun(int a) { int f; if (a == 23) f = 9; else if (a < 7) f = pow(fun(abs(a - 1) - 2), 2); else f = log(a - 2) / fun(a - 1); return f; }
Объяснение кода листинга программы
- Объявлена рекурсивная функция
fun(int a)
. - В функции объявлена переменная
f
типаint
. - Если
a
равно 23, тоf
присваивается 9. - Иначе, если
a
меньше 7, тоf
вычисляется как результат вызова функцииfun
с аргументомabs(a - 1) - 2
, возведенным в квадрат. - Иначе, если
a
больше или равно 7, тоf
вычисляется как результат вызова функцииfun
с аргументомa - 1
, деленный на логарифм (log
) от(a - 2)
. - Функция возвращает значение
f
. - Функция вызывается с аргументом 7.
- Процесс повторяется с шага 4 до тех пор, пока не будет достигнуто базовое условие (если
a
равно 23). - Значение 9 присваивается переменной
f
. - Функция возвращает значение 9.
- Значение 9 возвращается в качестве результата выполнения функции.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д