Вычисление суммы рекурсивно и итеративно - Free Pascal
Формулировка задачи:
Помогите сделать программу. В понедельник сдавать, а мне еще 9 программ писать. Все мельком глянул, вот только эту не знаю как сделать.
Задача: Разработать программу согласно алгоритму с использованием рекурсивной функции и без использования рекурсивной функции.
Решение задачи: «Вычисление суммы рекурсивно и итеративно»
textual
Листинг программы
program pr; function f(n : integer) : integer; begin if n = 0 then f := 0 else f := (2*n - 1) + f(n - 1); end; var q, l, k: integer; begin q := 0; writeln('Введите k'); readln(k); writeln('Рекурсия: q = ', f(k)); l := 1; repeat q := q + (2 * l - 1); l := l + 1; until l > k; writeln('Итерация: q = ', q); end.
Объяснение кода листинга программы
Список с пояснениями:
- Объявление функции f(n: integer) : integer;
- Функция вычисляет сумму рекурсивно
- Если n = 0, то возвращает 0
- Иначе, возвращает (2*n - 1) + f(n - 1)
- Объявление переменных q, l, k: integer;
- q инициализируется как 0
- l инициализируется как 1
- k запрашивается у пользователя
- Вывод сообщения
Рекурсия: q =
и значение q, вычисленное функцией f(k) - Итерация с использованием цикла while
- q увеличивается на (2 * l - 1)
- l увеличивается на 1
- Цикл повторяется до тех пор, пока l не станет больше k
- Вывод сообщения
Итерация: q =
и значение q, вычисленное в цикле
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д