Форум программистов, компьютерный форум CyberForum.ru

Рекурсия - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
02.09.2011, 18:49     Рекурсия #1
на картинке файлик из википедии в которой говорится что рекусия имеет вид дерева и некоторые ветви могут вычислятся по многу раз. А как это реализованно в с++? то же с повторениями?
И как выделяется память под рекусивный вызов? Например есть функция с набором локальных переменных - они будут жить до тех пор пока не завершится функция, т.е. так долго пока не будет выход из рекурсии? и мы будем иметь большое множество участков в памяти с одинакововой структурой данных(но разными значениями)?
Миниатюры
Рекурсия  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2011, 18:49     Рекурсия
Посмотрите здесь:

РЕкурсия C++
Рекурсия (на С) C++
Рекурсия C++
рекурсия C++
Рекурсия C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.09.2011, 19:50     Рекурсия #21
Видимо, у меня немного другое издание, т.к. страницы не совпадают, но вот
пара цитат.
Обработка исключений представляет собой менее структурированный механизм управления, нежели локальные управляющие структуры типа if или for, и он показывает меньше эффективность в случае реально генерации исключения. Поэтому использовать такой механизм стоит лишь тогда, когда более традиционные структуры управления либо неэлегантны, либо недопустимы.
Рассмотренным применением исключений не стоит перебарщивать, ибо это ведет к запутанному коду. Всегда лучше, по возможности, придерживаться традиционный трактовки - "обработка исключений есть обработка ошибок".

Хотя он пишет, что использование исключений для выхода из рекурсии является элегантным. Может быть... Правда я еще не встречал рекурсивных функций, из которых сложно было выйти... Итого, как я понял, есть два варианта - хорошо продумать функцию с самого начала, или использовать исключение в качестве костыля...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
02.09.2011, 19:54  [ТС]     Рекурсия #22
спасибо парни вам за ответы все и за хорошие ссылки. пойду....переваривать......
LosAngeles
Заблокирован
02.09.2011, 19:55     Рекурсия #23
Цитата Сообщение от diagon Посмотреть сообщение
Правда я еще не встречал рекурсивных функций, из которых сложно было выйти
там же и пример даётся - поиск по дереву
diagon
02.09.2011, 20:07
  #24

Не по теме:

Цитата Сообщение от LosAngeles Посмотреть сообщение
там же и пример даётся - поиск по дереву
Да, пример, конечно, шикарен - там можно изменить тип возвращаемого значения на string, вместо throw поставить return + поставить return'ы перед вызовами - вроде то же самое получиться. Только вместо двух функций получиться одна, причем более эффективная. Ладно, не убедили вы меня =) Заканчиваю оффтоп...

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2011, 20:40     Рекурсия
Еще ссылки по теме:

C++ Рекурсия
C++ Рекурсия
Рекурсия C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Alex1234
 Аватар для Alex1234
12 / 12 / 0
Регистрация: 11.02.2011
Сообщений: 55
02.09.2011, 20:40     Рекурсия #25
В чем приемущество throw? К тому же ни к месту оно. Стек все равно будет разматываться. А за чем рекурсия? Всегда есть альтернативный способ с циклом и динамической памятью.
Yandex
Объявления
02.09.2011, 20:40     Рекурсия
Ответ Создать тему
Опции темы

Текущее время: 16:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru