Рекурсия: вычислить значение функции Аккермана - Pascal

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

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

Даны неотрицательные целые числа n,m; используя рекурсивную подпрограмму, вычислить значение функции Аккермана A(n,m), где A(n,m)={m=1, если n=0;A(n-1, 1), если n<>0, m=0; A(n-1,A(n,m-1)), если n>0, m>0}

Решение задачи: «Рекурсия: вычислить значение функции Аккермана»

textual
Листинг программы
  1. function A(const n, m: Extended): Extended;
  2. var
  3.     Result: Extended;
  4. begin
  5.     if (n = 0)
  6.     then
  7.         Result := m + 1
  8.     else
  9.         if (m = 0)
  10.         then
  11.             Result := A(n - 1, 1)
  12.         else
  13.             Result := A(n - 1, A(n, m - 1));
  14.     A := Result;
  15. end;
  16. var
  17.     n, m: Byte;
  18. begin
  19.     Write('Input n, m: '); ReadLn(n, m);
  20.     WriteLn('A(', n, ',', m, ')=', A(n, m):0:0);
  21. end.

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

  1. Объявляется функция с именем A и параметрами n и m типа Extended.
  2. Объявляется переменная Result типа Extended.
  3. Проверяется условие: если n равно 0, то присваивается Result значение m + 1.
  4. Если условие из пункта 3 неверно, проверяется условие: если m равно 0, то Result получает значение вызова функции A с параметрами n - 1 и 1.
  5. Если оба предыдущих условия ложны, Result получает значение вызова функции A с параметрами n - 1 и вызова функции A с параметрами n и m - 1.
  6. Функция A возвращает значение Result.
  7. Объявляются переменные n и m типа Byte.
  8. Пользователю предлагается ввести значения для n и m.
  9. Выводится результат вызова функции A с параметрами n и m.

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


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

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

5   голосов , оценка 3.6 из 5

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

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

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