Вычисление суммы рекурсивно и итеративно - 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, вычисленное в цикле
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д