функция аккермана



Автор Исит пб задал вопрос в разделе Другие языки и технологии

Как реализовать функцию Аккермана без рекурсии в с++? и получил лучший ответ

Ответ от Ra[гуру]
#include <vector>
...
double acki(int m, int n) {
std::vector<double> s(2);
s[0] = m; s[1] = n;
for (int t = 1; t != 0;) {
if (s[t - 1] == 0) {
s[t] = s[--t + 1] + 1;
} else if (s[t] == 0) {
s[t] = 1;
--s[t - 1];
} else {
if (s.size() == t + 1) s.resize(s.size() + 1);
s[t + 1] = s[t] - 1;
s[t] = s[t - 1];
--s[t++ -1];
}
}
return s[0];
}

Ответ от Il Burbero[гуру]
Классический рекурсивный пример без рекурсии? Это как? Зачем? Озеро без воды и пустыня без песка? Парадокс.
#include <iostream>
using namespace std;
long ackermann(long x, long y)
{
if (x == 0) return y+1;
else if (y == 0) return ackermann(x-1, 1);
else return ackermann(x-1, ackermann(x, y-1));
}
int main()
{
long x,y;
cout << "x ve y..:";
cin>>x;
cin>>y;
cout<<ackermann(x,y);
return 0;
}

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Как реализовать функцию Аккермана без рекурсии в с++?
Функция Аккермана на Википедии
Посмотрите статью на википедии про Функция Аккермана
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*