07.12.2005, 19:32 | #1 |
Участник
|
Народ!
Кто-нибудь реально сталкивался с необходимостью написания рекурсивных функций в Навижине? Есть примеры? |
|
07.12.2005, 21:06 | #2 |
NavAx
|
А в чем проблемы? Пишутся элементарно, как в Паскале.
Правда, есть недостаток - стек слабый. Функия Аккермана в 3.01 у меня загибалась, кажется, на (3, 4)
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
08.12.2005, 09:14 | #3 |
Участник
|
в 3.7А проблем не наблюдалось. Как сказал ув. Дуд пишется как в Паскале
|
|
08.12.2005, 11:29 | #4 |
Участник
|
Я проверял рекурсию в 2.5. сталкивался с какими-то странными сообщениями при количестве уровней вложенности больше 1000.
Тестил на чем-то вроде F(i) { I+=1; message(format(i)); myCU.F(i); } |
|
08.12.2005, 17:11 | #5 |
Участник
|
Цитата:
а могут ли быть проблемы с памятью, если вызывать несколько раз за сеанс работы с Навиженном при небольшой глубине рекурсии (до 10)? |
|
08.12.2005, 17:14 | #6 |
NavAx
|
Не должно быть проблем
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
08.12.2005, 17:56 | #7 |
Moderator
|
Вот такой код вызывает крэш без всяких ошибок:
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 |
Участник
|
у меня 4.0 и без таких извращений вылетает постоянно
__________________
Want to believe... |
|
26.01.2006, 00:36 | #9 |
Участник
|
Цитата:
Напарывался на подобное в 3.7, эскпериментальным путём было установлено, что максимальная глубина рекурсии - не помню сколько, но сильно меньше трёхста стековых записей. Больше в стек не лезет. Так что увы и ах, но способа обойти траблу не было найдено. Разве что реализовывать "внутрипрограммный" стек самостоятельно, а это уже из области иллюзионной проктологии :) |
|
26.01.2006, 11:46 | #10 |
Moderator
|
Цитата:
Количество возможных вложенностей вызовов зависит от глубины стека
Цитата:
Разве что реализовывать "внутрипрограммный" стек самостоятельно, а это уже из области иллюзионной проктологии
|
|