Тема: рекурсия
Показать сообщение отдельно
Старый 26.01.2006, 00:36   #8  
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, эскпериментальным путём было установлено, что максимальная глубина рекурсии - не помню сколько, но сильно меньше трёхста стековых записей. Больше в стек не лезет. Так что увы и ах, но способа обойти траблу не было найдено. Разве что реализовывать "внутрипрограммный" стек самостоятельно, а это уже из области иллюзионной проктологии :)