Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2010, 11:53   #1
DinaraIITU
Новичок
Джуниор
 
Регистрация: 03.11.2010
Сообщений: 1
Злость рекурсия

помогите пожалуйста не как не могу понять что такое рекурсия
DinaraIITU вне форума Ответить с цитированием
Старый 04.11.2010, 13:16   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Рекурсия. Вызов процедуры (функции) из самой себя.
Код:
procedure Rec;
begin
  ...
  Rec;
end
Рекурсия. Википедия
Прик вне форума Ответить с цитированием
Старый 04.11.2010, 15:36   #3
sergey.d
Пользователь
 
Регистрация: 23.08.2010
Сообщений: 98
По умолчанию

Лучше всего начать рассмотрение рекурсии с простого примера. Пример с факториалом уже набил оскомину, поэтому рассмотрим алгоритм детской считалочки. Есть упорядоченная группа из N человек и считалочка из M слов. Последовательность действий считающего на человеческом языке можно описать так:

1. Если в группе один человек, он водит
2. Иначе, из группы нужно исключить человека, на котором закончится счет, и повторить процедуру для оставшихся членов группы, считая из с человека следующего по порядку сразу за выбывшим.

После каждого исключения очередного человека из группы, по существу, формируется новая группа меньших размеров с новым отношением порядка. Налицо самоподобие алгоритма, на псевдокоде это можно записать так:

Код:
выбрать_водящего(список_имен, слов_в_считалке)
{
    если(размер(список_имен) == 1) вернуть(список_имен[0]);
    иначе
    {
        список_имен_2 = исключить_и_переупорядочить(список_имен, слов_в_считалке % размер(список_имен));
        вернуть(выбрать_водящего(список_имен_2, слов_в_считалке));
    }
}
Подразумевается, что результатом вызова исключить_и_переупорядочить является новый список имен, полученный из списка-аргумента в соответствии с изложенным выше.

Из примера видно, что рекурсивный алгоритм имеет 1) условие останова, предотвращающее зацикливание (в данном случае - при обработке тривиальной группы из одного человека) 2) обращение к самому себе (вернуть(выбрать_водящего(...))).

Последний раз редактировалось sergey.d; 04.11.2010 в 15:43.
sergey.d вне форума Ответить с цитированием
Старый 04.11.2010, 15:39   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Очень доступно описано, что такое рекурсия в учебнике - Стивен Прата "Язык программирования C++. Лекции и упражнения". Так, что советую прочитать...
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия Alexsey1991 Помощь студентам 1 12.05.2010 10:24
Рекурсия))) NewMen Паскаль, Turbo Pascal, PascalABC.NET 2 02.05.2010 14:24
Рекурсия на С++ Nitriyc Помощь студентам 0 28.04.2010 17:22
си рекурсия world12_tk Помощь студентам 1 10.04.2009 23:06