AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.12.2005, 19:32   #1  
TanyaV_imported is offline
TanyaV_imported
Участник
 
66 / 10 (1) +
Регистрация: 25.04.2005
?
Народ!
Кто-нибудь реально сталкивался с необходимостью написания рекурсивных функций в Навижине?
Есть примеры?
Старый 07.12.2005, 21:06   #2  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
А в чем проблемы? Пишутся элементарно, как в Паскале.
Правда, есть недостаток - стек слабый. Функия Аккермана в 3.01 у меня загибалась, кажется, на (3, 4)
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 08.12.2005, 09:14   #3  
Greggy_imported is offline
Greggy_imported
Участник
Аватар для Greggy_imported
 
291 / 10 (1) +
Регистрация: 24.09.2004
в 3.7А проблем не наблюдалось. Как сказал ув. Дуд пишется как в Паскале
Старый 08.12.2005, 11:29   #4  
sanya_123 is offline
sanya_123
Участник
 
93 / 11 (1) +
Регистрация: 18.04.2005
Я проверял рекурсию в 2.5. сталкивался с какими-то странными сообщениями при количестве уровней вложенности больше 1000.

Тестил на чем-то вроде

F(i)
{
I+=1;
message(format(i));
myCU.F(i);
}
Старый 08.12.2005, 17:11   #5  
TanyaV_imported is offline
TanyaV_imported
Участник
 
66 / 10 (1) +
Регистрация: 25.04.2005
Цитата:
Сообщение от sanya_123 Посмотреть сообщение
Я проверял рекурсию в 2.5. сталкивался с какими-то странными сообщениями при количестве уровней вложенности больше 1000.

Тестил на чем-то вроде

F(i)
{
I+=1;
message(format(i));
myCU.F(i);
}
я думаю что глубина рекурсии будет у меня не больше 10.


а могут ли быть проблемы с памятью, если вызывать несколько раз за сеанс работы с Навиженном при небольшой глубине рекурсии (до 10)?
Старый 08.12.2005, 17:14   #6  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Не должно быть проблем
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 08.12.2005, 17:56   #7  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Вот такой код вызывает крэш без всяких ошибок:

OnRun()
Window.OPEN('#1############');
myFunc();

myFunc()
Counter+=1;
Window.UPDATE(1,Counter);
IF Counter>700 THEN SLEEP(100) ELSE SLEEP(10);
IF Counter=1000 THEN EXIT ELSE myFunc();

На 4.0 он вылетает на 792 итерации
Старый 09.12.2005, 10:35   #8  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
у меня 4.0 и без таких извращений вылетает постоянно
__________________
Want to believe...
Старый 26.01.2006, 00:36   #9  
The_Navisioner is offline
The_Navisioner
Участник
Аватар для The_Navisioner
 
22 / 10 (1) +
Регистрация: 25.01.2006
Цитата:
Сообщение от tyrex Посмотреть сообщение
Вот такой код вызывает крэш без всяких ошибок:

OnRun()
Window.OPEN('#1############');
myFunc();

myFunc()
Counter+=1;
Window.UPDATE(1,Counter);
IF Counter>700 THEN SLEEP(100) ELSE SLEEP(10);
IF Counter=1000 THEN EXIT ELSE myFunc();

На 4.0 он вылетает на 792 итерации
Количество возможных вложенностей вызовов зависит от глубины стека.
Напарывался на подобное в 3.7, эскпериментальным путём было установлено, что максимальная глубина рекурсии - не помню сколько, но сильно меньше трёхста стековых записей. Больше в стек не лезет. Так что увы и ах, но способа обойти траблу не было найдено. Разве что реализовывать "внутрипрограммный" стек самостоятельно, а это уже из области иллюзионной проктологии :)
Старый 26.01.2006, 11:46   #10  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Цитата:
Количество возможных вложенностей вызовов зависит от глубины стека
Зависит от программной реализации этого стека в интерпретаторе С/AL.

Цитата:
Разве что реализовывать "внутрипрограммный" стек самостоятельно, а это уже из области иллюзионной проктологии
Почему иллюзионной? Легко реализовать. Например в виде массива для параметров и результата
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:26.