Вычисление функции Аккермана итерационно - Turbo Pascal
Формулировка задачи:
Помогите пожалуйста написать программу для вычисления функции акермана, не рекурсивным путём.
Прокопал интернет, ничего не нашёл. Сам понять не могу, как выполнить это итерационно. Буду благодарен, если кто поможет, сроки поджимают
Код к задаче: «Вычисление функции Аккермана итерационно - Turbo Pascal»
const tsize = maxint div 2 div sizeof(integer); var s : array[1 .. tsize] of integer; d : integer; function IterAckermann(m, n : integer) : longint; var t : integer; begin t := 1; s[t] := m; repeat m := s[t]; dec(t); if m = 0 then inc(n) else if n = 0 then begin inc(t); s[t] := m - 1; n := 1 end else begin inc(t); s[t] := m - 1; inc(t); s[t] := m; dec(n); end; if t > d then begin d := t; if d > tsize then writeln('failure'); end; until t = 0; IterAckermann := n; end; begin d := 1; writeln(IterAckermann(3, 7)); end.
5 голосов, оценка 4.400 из 5
СОХРАНИТЬ ССЫЛКУ