| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Интересные и занимательные задачи по программированию > Нерекурсивный алгоритм |
| Автор: Гость_Клим 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) Нерекурсивным является алгоритм, в описании которого не используется напрямую или косвенно он сам. Я че-то не догоняю! |