IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Функция Аккермана, итерационное решение
Mika
сообщение 16.04.2006 16:51
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской
Реальное имя: Михаил

Репутация: -  0  +


Нужны два варианта решения: рекурсивный и итерационный.

1. Рекусия уже написана но очень быстро переполняется стек. Подкиньте идею оптимизации.

2. Нужно решение итерационное с помощью имитации стека массивом записей. smile

Код

    
function Acc(n,m : word): word;
begin
if (n=0) then Acc:=m+1 else
    begin
    if (n<>0)and(m=0) then Acc:=Acc(n-1,1);
    if (n<>0)and(m<>0) then Acc:=Acc(n-1,Acc(n,m-1));
end;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 16.04.2006 16:55
Сообщение #2


Гость






Ну, я же дал тебе идею оптимизации рекурсии:
Function FAcc(n, m: LongInt): Longint;
begin
While n <> 0 Do Begin
Dec(n);
If m = 0 Then m := 1 Else m := FAcc(n + 1, m - 1);
End;
FAcc := m + 1;
end;


Насчет итерации - где-то видел, сейчас гляну...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.06.2025 0:11
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"