Вычислить выражение рекурсивно и итеративно - C (СИ)

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

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

Решить задачу двумя способами - с рекурсией и без:

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

textual
Листинг программы
#include <stdio.h>
#include <math.h>
 
double func1(unsigned n) {
    double val = 0.0;
 
    for (; 0 < n; --n) {
        val = sqrt((double)n + val);
    }
    return val;
}
 
double func2(unsigned a, unsigned n) {
    if (n < a) {
        return 0.0;
    }
    return sqrt(a + func2(a + 1, n));
}
 
int main() {
    int n = 5;
 
    printf("func1 = %lf\n", func1(n));
    printf("func2 = %lf\n", func2(1, n));
 
    return 0;
}

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

  1. Подключение необходимых библиотек для работы с числами с плавающей точкой и для ввода-вывода.
  2. Определение двух функций: func1 и func2.
  3. Функция func1 вычисляет значение рекурсивно, используя цикл for, который выполняется до тех пор, пока значение n больше нуля.
  4. Значение переменной val инициализируется как 0.0.
  5. Внутри цикла значение переменной val вычисляется как квадратный корень из (double)n + val.
  6. Функция func2 вычисляет значение итеративно, используя рекурсивный вызов внутри условия if.
  7. Если значение n меньше a, функция возвращает 0.0.
  8. В противном случае, функция возвращает квадратный корень из a + func2(a + 1, n).
  9. В функции main() определены две переменные: n и a.
  10. Значение переменной n равно 5.
  11. Вызов функции func1(n) и вывод результата в консоль.
  12. Вызов функции func2(1, n) и вывод результата в консоль.
  13. Возврат 0 из функции main(), что означает успешный конец работы программы.

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


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

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

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