Вычислить значение выражения, используя рекурсивную подпрограмму - Pascal

Узнай цену своей работы

Формулировка задачи:

Составить программу, которая, используя рекурсивную функцию или процедуру, находит значение данной функции для любых целых неотрицательных аргументов: F(n,m) = (n/2), если n-четно, m, если n=1, F((n+1)/2), m+1) в остальных случаях.

Решение задачи: «Вычислить значение выражения, используя рекурсивную подпрограмму»

textual
Листинг программы
  1. function f(n, m: integer): integer;
  2. begin
  3.   if odd(n) then f := f((n + 1) div 2, m + 1) else f := n div 2
  4. end;
  5.  
  6. var n, m: integer;
  7. begin
  8.   write('n = ');
  9.   readln(n);
  10.   write('m = ');
  11.   readln(m);
  12.   if (n < 0) or (m < 0)
  13.     then write('Function is undefined')
  14.     else write('F(n, m) = ', F(n, m));
  15.   readln
  16. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы