Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Интересные и занимательные задачи по программированию > Нерекурсивный алгоритм


Автор: Гость_Клим 28.10.2005, 16:13
Ребят, помогите! Задачка на олимпиаде:

Задача 2. Функция Аккермана I
Известно, что функция Аккермана A(m,n) определена для всех неотрицательных чисел m и n
следующим образом:
A(0,n)=n+1 (при n>= 0)
A(m,0)=A(m-1,1)(при m>0)
A(m,n)=A(m-1,A(m,n-1)) (при m,n>0)
Вычислите значения A(1,1) и A(2,0) используя рекурсию.

==================
Эту задачу я сделал, вот прога:
program chick;
uses Crt;
var a,k,m,n:integer;
function akerman(m,n:integer) :integer;
begin
if (n>=0) and (m=0) then akerman:=n+1;
if (n=0) and (m>0) then akerman:=akerman(m-1,1);
if (m>0) and (n>0) then akerman:=akerman(m-1,akerman(m,n-1));
end;

BEGIN
Clrscr;writeln('Vvedite m i n');
readln(m);
readln(n);

a:=akerman(m,n);
writeln(a);

readln;
end.


======================

Но следующая задача вытекает из предыдущей: надо сделать тоже самое
но без рекурсии!

Задача3. Функция Аккермана II
Функция Аккермана определяется, как описано в Задаче 2.
Напишите неркурсивный алгоримт вычисления по заданным m и n значения
функции Аккермана A(m,n)
Нерекурсивным является алгоритм, в описании которого не используется
напрямую или косвенно он сам.


Я че-то не догоняю!
smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)