Вычисление суммы рекурсивно и итеративно - 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, вычисленное в цикле