Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Глубина стека (http://www.flasher.ru/forum/showthread.php?t=150058)

semenyakinVS 05.02.2011 16:24

Глубина стека
 
Есть алгоритм создания дерева. Произвольного.
Возникла необходимость вложености больше 255 на ветках.

Как я понял, максимальная глубина стека в AS3 255...

Как можно управлять стеком виртуальной машины и вообще, можно ли это?

Добавлено через 2 минуты
Вложеность может быть больше 255 - проверил. Но какая тогда максимальная глубина?

samana 05.02.2011 16:43

Цитата:

Сообщение от semenyakinVS (Сообщение 970628)
Но какая тогда максимальная глубина?

Не стоит заморачиваться на пустом месте. Глубины вам хватит в любом случае.

КорДум 05.02.2011 19:14

Имеется в виду какой-нибудь факториал от 300? Я бы посоветовал вам разделить все это дело на несколько частей, каждая из которых не выходит за пределы стека. Мол, посчитать от 1 до 255, затем от 256 до 300 и перемножить эти результаты.

i.o. 05.02.2011 19:27

Цитата:

Как я понял, максимальная глубина стека в AS3 255...
ответ отрицательный. Можно задать свою глубину, если верить докам

expl 05.02.2011 19:27

Вообще где-то было изменение максимального размера стека (что-то плохо гуглится), по крайней мере через изменение пары байт в скомпилированной swf-ке.

А вообще любой рекурсивный алгоритм можно свести к нерекурсивному, если для каждой переменной,
хранившейся в стеке, создать массив. Ложить через pop(), доставать через push().
Переменных, общих для всех подвызовов функции, это, понятно, не касается.
Читабельность, конечно, может ухудшится, а может и не очень.

mikhailk 05.02.2011 19:40

Цитата:

Не стоит заморачиваться на пустом месте. Глубины вам хватит в любом случае.
У меня был один рекурсивный механизм расчета баттла, базирующийся на вероятности. Иногда, когда встречались два косых, но супер-защищенных противника, дно достигалось. :D
Пришлось ставить ограничитель. Типа, если за столько-то ходов никто никого не убил, сворачиваем баттл за отсутствием явного преимущества одной из сторон.

samana 05.02.2011 19:49

Оказывается я не понял вопроса. Я почему-то подумал о вложенности объектов в DisplayList. Извините меня пожалуйста. )

Psycho Tiger 05.02.2011 20:21

Flash IDE вроде давал ввести свою глубину. Значит, можно.

semenyakinVS 06.02.2011 00:18

Спасибо за ответы
 
Цитата:

Сообщение от Psycho Tiger (Сообщение 970716)
Flash IDE вроде давал ввести свою глубину. Значит, можно.

Ух ты! Где давал? Я что-то пропустил?

Цитата:

Сообщение от КорДум (Сообщение 970697)
Имеется в виду какой-нибудь факториал от 300? Я бы посоветовал вам разделить все это дело на несколько частей, каждая из которых не выходит за пределы стека. Мол, посчитать от 1 до 255, затем от 256 до 300 и перемножить эти результаты.

Сарказм?.. Нет, факториал я не считал.

Цитата:

Сообщение от expl (Сообщение 970703)
А вообще любой рекурсивный алгоритм можно свести к нерекурсивному.

Cвести задачу к итерации, увы не получится. Это именно дерево, причём произвольной конфигурации.

Но за совет спасибо, хотя такой способ знал и сам. В крайнем случаи прибегну к нему…

expl 06.02.2011 00:21

Цитата:

Cвести задачу к итерации, увы не получится. Это именно дерево, причём произвольной конфигурации.
Вы не поверите, но дерево можно обойти нерекурсивно. И даже произвольной конфигурации
http://www.petrsu.ru/Chairs/IMO/pasc...part2_1_7.html

Цитата:

Ух ты! Где давал? Я что-то пропустил?
В параметрах публикации, наверное.


Часовой пояс GMT +4, время: 23:46.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.