Если эмулировать стек, то это будет не выигрыш, а проигрыш по времени. А с точки зрения теории так вообще не важно, что там у нас: стек или эмуляция стека
Я в той теме уже задачку кинул, кину и сюда. Для
функции Аккермана программа на Паскале (другими языками не владею, простите) выглядит так (тип natural --- это тип для произвольного натурального числа, натуральный ряд начинаем с нуля
):
Код:
function A(z,x,y: natural): natural;
begin
if z = 0 then A := x + y else
if y = 0 then A := sign(z-1) else
A := A(z-1,x,A(z,x,y-1))
end;
Коротко и предельно ясно! А теперь попробуйте написать вычисление функции
без рекурсивного вызова
У меня несколько лет назад один студент на курсе это сделал, так я до сих пор нахожусь под впечатлением от его подвига