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