![]() |
глубина рекурсии
Насколько я знаю глубина ограничена 256 вызовами.
Однако сделав некий код, я обнаружил, что у меня (по крайней мере в флеш-проигрывателе флеш-редактора (8) что счет переваливает за 300. :eek: Код:
// -этот кусок стоит первой строкой в самой рекурсивной функции |
выложи нормальную функцию, в этой нечерта не понятно.
|
Что тут непонятного?
В рекурсивной функции стоит увеличитель счетчика zz перед вызовом функции он сбрасывается на ноль, после вызова выводиться в output. Причем тот же код в классике с факториалом явно не позволяет делать рекурсию длиннее 256 вызовов! Код:
function factorial(n) {И выходит что делает она это иногда даже 303 раза! Код:
f_find=function(fName, fPath){ // Рекурсия Причем если расширить зону поиска, т.е. в начальную точку поска вбить не _root.mc1.mc2, а скажем _root.mc1 или просто _root, то предупреждение о переполнении стека в 256 все же следует! |
То, что функция вызвалась 303 раза ещё не означает, что была она достигла такой же глубины рекурсии.
Из-за цикла: Код:
for (i in fPath)Вот простой пример: Код:
function go(n) {Хотя максимальная глубина вызовов: 6. |
Круто!
А как же тогда подсчитать именно достигнутую глубину рекурсии? |
Код:
function rec(level:Number){ |
Например, можно сделать zz параметром.
Код:
max_recurse_depth = 0; |
Да, спасибо, такой вариант все правильно показывает
Код:
function go(n, level) { |
| Часовой пояс GMT +4, время: 07:06. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.