Рекурсия: вычислить значение функции Аккермана - 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
Листинг программы
function A(const n, m: Extended): Extended;
var
    Result: Extended;
begin
    if (n = 0)
    then
        Result := m + 1
    else
        if (m = 0)
        then
            Result := A(n - 1, 1)
        else
            Result := A(n - 1, A(n, m - 1));
    A := Result;
end;
var
    n, m: Byte;
begin
    Write('Input n, m: '); ReadLn(n, m);
    WriteLn('A(', n, ',', m, ')=', A(n, m):0:0);
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