Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.02.2013, 14:27
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 1  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
По умолчанию Вызов функции в самой функции.

Рылся недавно на одном из форумов и в одной из тем наткнулся на код C#:
Код:
static void fill(int n)
{
    for (int i = 0; i < 25; i++){
        if (!arrstr[i].use && n != 4 && n != 19 || n == 4 && i == 19 || n == 19 && i == 12)
        {
            arr[n] = arrstr[i].n;
            int s = arr[n - 1] + arr[n];
            if (s == 4 || s == 9 || s == 16 || s == 25 || s == 36 || s == 49)
            {
                arrstr[i].use = true;
                if (n < 24) fill(n + 1);
                else
                {
                    foreach (int a in arr) Console.Write("{0,3}", a);
                    Console.WriteLine();
                }
                if (n != 4 && n != 19) arrstr[i].use = false;
            }
        }
    }
}
Насколько я понял это объявление функции fill, но фишка в том что в теле объявления функции fill идёт вызов этой самой функции.
Вопрос: т.к. язык C# и AS3 C-подобны и весьма схожи в орфографии можно ли такие фишки использовать в AS3. При случае непременно опробую сам на практике, но хочется спросить у тех кто возможно использовал подобный приём.
Вообще это может походть на какой-то цикл ?

Старый 01.02.2013, 14:31
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 2  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Ребят, ну, блин, сядьте наконец и прочтите хоть одну книгу по основам программирования от корки до корки. А то элементарные вещи не знаете. Это называется рекурсия. Повсеместно используется в алгоритмах поиска по графу, сортировки и т.д.
__________________
мой пустой блог

Старый 01.02.2013, 14:32
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 3  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
рекурсия
__________________
местонахождение

Старый 01.02.2013, 14:54
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
При случае непременно опробую сам на практике, но хочется спросить у тех кто возможно использовал подобный приём.
Вообще это может походть на какой-то цикл ?
А не проще ли было просто сделать простой тест, а не писать эту тему? Гораздо быстрее получилось бы.

Вообще, к слову, на счет новых плееров не знаю, не интересовался, но раньше на рекурсию были ограничения (хотя возможно не на рекурсию как таковую, а вообще на время выполения). Причем споры заходили разные, и не только здесь, но и на других форумах, какова же глубина. Кто-то говорил, что ограничение 2000 итераций? Я лично проводил множество тестов, и ни разу не получил схожих результатов. Когда-то ошибка вылетала на 2 с небольшим тысячах итераций, когда-то на 9, иногда на полутора тысячах, причем в одном и том же тесте. Возможно здесь дело только в ограничении времени выполнения скрипта, но 15 секунд он явно не работал, даже 5.
В общем, рекурсия может быть полезна, если ее не использовать бездумно везде где не попадя. Но там, где ее можно легко заменить циклом, лично я бы выбрал цикл.

Старый 01.02.2013, 15:12
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 5  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Вообще, к слову, на счет новых плееров не знаю, не интересовался, но раньше на рекурсию были ограничения (хотя возможно не на рекурсию как таковую, а вообще на время выполения). Причем споры заходили разные, и не только здесь, но и на других форумах, какова же глубина. Кто-то говорил, что ограничение 2000 итераций? Я лично проводил множество тестов, и ни разу не получил схожих результатов. Когда-то ошибка вылетала на 2 с небольшим тысячах итераций, когда-то на 9, иногда на полутора тысячах, причем в одном и том же тесте. Возможно здесь дело только в ограничении времени выполнения скрипта, но 15 секунд он явно не работал, даже 5.
Из спецификации SWF (7 версия и выше)
Цитата:
The MaxRecursionDepth field sets the ActionScript maximum recursion limit. The default setting is 256 at the time of this writing. This default can be changed to any value greater than zero (0).
Максимум? Под это в swf отводится UI16, то есть 65535.
А время на лимит выполнение по умолчанию 15-20 (от платформы зависит), максимум опять же задается UI16 (как раз за MaxRecursionDepth)
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 01.02.2013, 15:38
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 6  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
iflamberg: Насчёт элементарных вещей:
Цитата:
Продолжаю выкладывать WIP игрушки, над которой я работаю.
У каждого есть свои фишки на предмет элементарных вещей.

Старый 01.02.2013, 16:01
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 7  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
И что там тебе показалось "элементарным"?
__________________
мой пустой блог

Старый 01.02.2013, 16:18
Chum вне форума Посмотреть профиль Отправить личное сообщение для Chum Найти все сообщения от Chum
  № 8  
Ответить с цитированием
Chum
[+1 06.03.13]

Регистрация: Feb 2007
Сообщений: 174
Теперь уже ничего.

Старый 01.02.2013, 16:46
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
iNils, По ходу эти настройки стали игнорироваться более современными плеерами примерно года два назад. Обычно рекурсия умирает просто когда стек исчерпан, а он исчерпается в зависимости от того, что будет в одном кадре стека и сколько система выделяет места под тред (возможно, так же, от того, сколько инстансов плеера существует одновременно). Вобщем, тема эта темная.
__________________
Hell is the possibility of sanity

Старый 01.02.2013, 16:48
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от wvxvw Посмотреть сообщение
iNils, По ходу эти настройки стали игнорироваться более современными плеерами примерно года два назад. Обычно рекурсия умирает просто когда стек исчерпан, а он исчерпается в зависимости от того, что будет в одном кадре стека и сколько система выделяет места под тред (возможно, так же, от того, сколько инстансов плеера существует одновременно). Вобщем, тема эта темная.
Я всегда исходил из того, что глубина стека должна быть не более 256)
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:02.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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