Вычислить значение выражения, используя рекурсивную подпрограмму - Pascal
Формулировка задачи:
Составить программу, которая, используя рекурсивную функцию или процедуру,
находит значение данной функции для любых целых неотрицательных аргументов:
F(n,m) = (n/2), если n-четно,
m, если n=1,
F((n+1)/2), m+1) в остальных случаях.
Решение задачи: «Вычислить значение выражения, используя рекурсивную подпрограмму»
textual
Листинг программы
- function f(n, m: integer): integer;
- begin
- if odd(n) then f := f((n + 1) div 2, m + 1) else f := n div 2
- end;
- var n, m: integer;
- begin
- write('n = ');
- readln(n);
- write('m = ');
- readln(m);
- if (n < 0) or (m < 0)
- then write('Function is undefined')
- else write('F(n, m) = ', F(n, m));
- readln
- end.
Объяснение кода листинга программы
- Создаётся функция с именем f, которая принимает два аргумента n и m типа integer.
- Внутри функции проверяется, является ли число n нечётным. Если да, то вызывается рекурсивная подпрограмма f с аргументами (n + 1) / 2 и m + 1. Если нет, то результат вычисляется как n / 2.
- В переменной n хранится вводимое пользователем число, а в переменной m - другое вводимое пользователем число.
- Выводится сообщение с запросом ввести значения n и m.
- Проверяется, не являются ли значения n и m отрицательными. Если хотя бы одно из них отрицательное, выводится сообщение о том, что функция не определена.
- Иначе выводится результат вызова функции f(n, m).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д