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

Объяснение кода листинга программы

  1. Создаётся функция с именем f, которая принимает два аргумента n и m типа integer.
  2. Внутри функции проверяется, является ли число n нечётным. Если да, то вызывается рекурсивная подпрограмма f с аргументами (n + 1) / 2 и m + 1. Если нет, то результат вычисляется как n / 2.
  3. В переменной n хранится вводимое пользователем число, а в переменной m - другое вводимое пользователем число.
  4. Выводится сообщение с запросом ввести значения n и m.
  5. Проверяется, не являются ли значения n и m отрицательными. Если хотя бы одно из них отрицательное, выводится сообщение о том, что функция не определена.
  6. Иначе выводится результат вызова функции f(n, m).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы