Вычислить выражение рекурсивно и итеративно - 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; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с числами с плавающей точкой и для ввода-вывода.
- Определение двух функций: func1 и func2.
- Функция func1 вычисляет значение рекурсивно, используя цикл for, который выполняется до тех пор, пока значение n больше нуля.
- Значение переменной val инициализируется как 0.0.
- Внутри цикла значение переменной val вычисляется как квадратный корень из (double)n + val.
- Функция func2 вычисляет значение итеративно, используя рекурсивный вызов внутри условия if.
- Если значение n меньше a, функция возвращает 0.0.
- В противном случае, функция возвращает квадратный корень из a + func2(a + 1, n).
- В функции main() определены две переменные: n и a.
- Значение переменной n равно 5.
- Вызов функции func1(n) и вывод результата в консоль.
- Вызов функции func2(1, n) и вывод результата в консоль.
- Возврат 0 из функции main(), что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д