Подскажите где ошибка (рекурсивная функция) - 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;
}

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

  1. Объявлена рекурсивная функция fun(int a).
  2. В функции объявлена переменная f типа int.
  3. Если a равно 23, то f присваивается 9.
  4. Иначе, если a меньше 7, то f вычисляется как результат вызова функции fun с аргументом abs(a - 1) - 2, возведенным в квадрат.
  5. Иначе, если a больше или равно 7, то f вычисляется как результат вызова функции fun с аргументом a - 1, деленный на логарифм (log) от (a - 2).
  6. Функция возвращает значение f.
  7. Функция вызывается с аргументом 7.
  8. Процесс повторяется с шага 4 до тех пор, пока не будет достигнуто базовое условие (если a равно 23).
  9. Значение 9 присваивается переменной f.
  10. Функция возвращает значение 9.
  11. Значение 9 возвращается в качестве результата выполнения функции.

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


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

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

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