Unity forge
Логин: Пароль: [Не помню пароль]
Unity3d Статистика сайта Unity3d
пользователь Unity3d Пользователей 10
новый пользователь Unity3d Новых 0
он-лайн Unity3d Он-лайн 0
гости Unity3d Гостей 1
Unity3d Ресурсы Unity3d
статьи Unity3d Статей 3
уроки Unity3d Уроков 2
видеоуроки Unity3d Видеоуроков 5
загрузки Unity3d Загрузок 13

Рекурсия в программировании

Рекурсия - прием использования функций в программировании, при котором функция содержит в себе вызов себя же при соблюдении определенных условий.
Согласен, не очень понятно о чем именно идет речь. Но давайте попробуем разобраться так ли все сложна на самом деле.
Зачастую рекурсивные функции в программировании используются в случае необходимости выполнять какое-либо действие до наступления некоторых условий при этом каждый новый цикл выполнения может принимать измененные данные по сравнению с первым вызовом.
Если вы уже знакомы с объектно-ориентированным программированием, то скорее всего у вас тут же возникнет вопрос – «почему не воспользоваться обычными циклами?». Вы абсолютно правы, но во-первых – это не всегда позволяет условие поставленной задачи, во-вторых – применение рекурсии в каждом отдельно взятом случае может ускорить работу приложения по сравнению с реализацией решения той же задачи циклом, ну и в-третьих скорее всего вам понадобится написать намного меньше кода. Вроде как одни плюсы такого подхода. Но есть и обратная сторона медали – допустив ошибку в проектировании рекурсивной функции вы можете зациклить приложение, вплоть до зависания всех процессов вашей операционной системы, плюс не всегда выгодно использовать рекурсию при малом объеме обрабатываемых данных. Всегда необходимо принимать во внимание соотношение между количеством данных для обработки и объемом кода.
Для наглядности приведу пример (C# код) того где не надо использовать рекурсию:

int cycleCount=5;
static void Recursion(int cycleCount)
{
Console.WriteLine(cycleCount);
if (cycleCount > 0)
Recursion(cycleCount-1);
}

это же самое можно сотворить с использованием цикла «for»:

for (int i = cycleCount; i>=0; i--)
{
Console.WriteLine(i);
}

как видите в данном случае использование цикла является менее громоздким.
В частных же случаях, если вы например пишете собственный файловый менеджер, то при обходе каталогов и файлов операционной системы наилучшим образом будет реализация указанного функционала с помощью рекурсии.
В любом случае использовать или нет решать вам.
Unity3d Рекламный блок Unity3d



Ruslan Slobodianiuk © unity3dforge.com все права защищены

Полезные ресурсы:

Программа для создания скриншотов