Форум 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)

Psycho Tiger 06.02.2011 00:24

Цитата:

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

КорДум 06.02.2011 00:25

Цитата:

Сарказм?.. Нет, факториал я не считал.
С чего бы? В расчете факториала тоже используется рекурсия.
Дерево тоже можно на части порубить и пробегаться кусками.

expl 06.02.2011 00:39

Цитата:

Сообщение от Psycho Tiger (Сообщение 970774)
Гм, действительно нету. Видимо, пропустил я.

Зато в доках по mxmlc есть:
http://help.adobe.com/en_US/flex/usi...9084-7a92.html

Цитата:

default-script-limits max-recursion-depth max-execution-time

The max-recursion-depth value specifies the maximum depth of Adobe Flash Player call stack before Flash Player stops. This is essentially the stack overflow limit. The default value is 1000.
Цитата:

С чего бы? В расчете факториала тоже используется рекурсия.
Это только в книжках чтобы показать для чего она нужна - на практике ни одна сволочь так писать не будет

P.S. В стеке вызовов насчитал 500 функций до падения - странно, но и что по умолчанию стоит на 255 не похоже

semenyakinVS 06.02.2011 00:47

Цитата:

Сообщение от КорДум (Сообщение 970775)
С чего бы? В расчете факториала тоже используется рекурсия.
Дерево тоже можно на части порубить и пробегаться кусками.

Смысла нету. Факториал считается динамическим програмированием. Пишется рекурентная формула, и всё очень хорошо выходит.

a0 = 1
a(n+1) = a(n)*(n+1)

Считать её деревом - безумие...

Добавлено через 1 минуту
Хотя нет, почти безумие. Для указанного в вашем комментарии факториала от 300 дерево может понадобиться для хранения результата. Тогда может быть нужным считать результат по веткам и суммировать в конце. Вы это имели в виду?

Добавлено через 3 минуты
Цитата:

но и что по умолчанию стоит на 255 не похоже
Я ж написал потом (в первом посте) - не 255, я проверил дальше, оно прошло.

Причем, в один из запусков глубина была 1302... Запуски, правда, были линейными. Неужели сама виртуалка разварачивает... По коду она этого понять не могла бы: там стоит цикл по кол-ву веток, просто в моём случаи ветка одна была для каждого уровня.

i.o. 06.02.2011 00:52

Цитата:

P.S. В стеке вызовов насчитал 500 функций до падения - странно, но и что по умолчанию стоит на 255 не похоже
Если сменить лимит времени выполнения скрипта, с 15 дефолтных на свои скажем 25 сек, и написать "тяжелый расчет", то после 25 сек, плеер любезно сообщит про превышение 15 сек лимита.

expl 06.02.2011 00:54

Вообще не понимаю, откуда легенда, что факториал считается рекурсией - в бывшей моей конторе на собеседовании чел тоже что-то про факториал и рекурсию плёл

Код AS3:

function fuctorial(x:int):int
{
    var a:int = 1;
    for (var i:int = 1; i <= x; i++)
    {
        a *= i;
    }
    return a;
}

Какая рекурсия может быть проще этого? (про производительность молчу)

i.o. 06.02.2011 00:58

Если это не обход дисплей-листа или прочих деревьев (хотя и их можно развернуть в цикл, просто не так элегантно будет выглядеть), то
Цитата:

Любую рекурсивную функцию можно заменить циклом и стеком.
вот вам источник

mikhailk 06.02.2011 00:59

Цитата:

Вообще не понимаю, откуда легенда, что факториал считается рекурсией
на самом деле это классика

Код AS3:

function factorial(n:uint) : uint
{
  if (n==1) return 1;
  else return n*factorial(n-1);
}

и рекурсией на самом деле многие вещи считать не в пример проще, нежели итерацией

КорДум 06.02.2011 01:04

Цитата:

Сообщение от mikhailk (Сообщение 970789)
на самом деле это классика

Код AS3:

function factorial(n:uint) : uint
{
  if (n==1) return 1;
  else return n*factorial(n-1);
}

и рекурсией на самом деле многие вещи считать не в пример проще, нежели итерацией

Ага, а-ля лабораторные в универе.

А вообще, вот я писал рекурсивный обход дерева: http://www.flasher.ru/forum/showthread.php?t=147050 )

expl 06.02.2011 01:07

Цитата:

и рекурсией на самом деле многие вещи считать не в пример проще, нежели итерацией
С этим не поспоришь - конечно никто не будет её разворачивать без острой необходимости.
В узких местах только от нее приходится избавляться.

Про фаториал:
Всётки эта классика не выглядит интуитивно понятной, но это ИМХО


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

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