![]() |
|
Модераторы: bsa |
![]()
|
|
| ShadowC |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 23.6.2011 Репутация: нет Всего: нет |
собственно,наверное вопрос крайне тупой,но все же,как научится строить рекурсивные алгоритмы,если нет методов,то может быть сможете дать какие нибудь ценные советы,наблюдения там,вообще буду благодарен любой помощи в этой проблеме
|
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 3 Всего: 19 |
SICP. Книга такая, рекурсии учит, правда не на С++, но это не важно при изучении рекурсии.
-------------------- You're face to face With man who sold the world |
|||
|
||||
| IlyaIvanov |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 13.9.2011 Где: Новосибирск Репутация: нет Всего: нет |
Ну здесь все просто. Как в песне Максима Леонидова "Я оглянулся посмотреть не оглянулась ли она чтоб посмотреть не оглянулся ли я"
Рекурсия это функция, которая запускает сама себя. Вот пример : Вам нужно посчитать n!=1*2*...*n. Итеративно Вы это делали так
Теперь напишем рекурсивно то же самое :
Получается что функция которая получила значение 5 возвратит 5* и вызовет сама себя с 4-кой, которая в свою очередь вернет 4* и запустит опять же сама себя с 3-кой. Закончатся рекурсивные запуски, когда параметр будет = 1. Итого получим 5*4*3*2*1. Тот же самый факториал. |
||||
|
|||||
| shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: 2 Всего: 2 |
Чтобы понять рекурсию, нужно понять рекурсию... -------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| ShadowC |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 23.6.2011 Репутация: нет Всего: нет |
пля ребят вы прям копетаны,что бы понять рекурсию надо понять рекурсию,хорошо приведу более конкретный пример,если мне надо составить древо рекурсии для ханойской башни,мне что 4 часа сидеть и веточки рисовать просчитывая все возможные варианты?
|
|||
|
||||
| 502 |
|
|||
![]() Я всегда прав ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 16.7.2011 Репутация: нет Всего: 4 |
а ты что хотел, 5 мин и готово? |
|||
|
||||
| ShadowC |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 23.6.2011 Репутация: нет Всего: нет |
ну не 5 минут,но мне кажется это диким,вот так создавать рекурсивные алгоритмы |
|||
|
||||
| RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: 3 Всего: 5 |
вот алгоритм:
1. Создать функцию foo(Type par) 2. Внутри функции проверить какой-нибудь алгоритм над параметром par (таких параметров может быть несколько). 3. Если нашел решение, прекращаешь рекурсию(рекурсия прекращается если ты больше не вызываешь функцию еще раз), если не нашел, вызываешь функцию внутри себя.
-------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 3 Всего: 19 |
-------------------- You're face to face With man who sold the world |
|||
|
||||
| RastaDja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 1.11.2010 Репутация: 3 Всего: 5 |
а еще, можешь создать рекурсию с помощью нескольких функций, которые вызывают друг друга внутри себя
так же внутри foo2() можешь вызвать foo1() и т.д. Это сообщение отредактировал(а) RastaDja - 14.9.2011, 13:28 -------------------- The more closely you look at one thing, the less closely can you see something else. |
|||
|
||||
| ShadowC |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 23.6.2011 Репутация: нет Всего: нет |
да не про тебя речь,речь про тех кто влез со своими |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Самое главное в рекурсии - не забыть из нее выйти Я как то смотрел, как один перец писал рекурсивное вычисление факториала (писал он на Pascal'е, но я буду на С) Первый вариант был таким:
Когда ему намекнули, что в рекурсии должна быть как минимум проверка на ее окончание, он родил 2й вариант:
В общем 3й вариант заработал, но это уже было не интересно |
||||
|
|||||
| ShadowC |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 23.6.2011 Репутация: нет Всего: нет |
это было бы смешно,если бы не было так грустно,вся ирония а том,что возможно когда-нибудь к тебе попадет код этого человека и именно тебе придется его отлаживать и исправлять,ну может быть не этого,но таких грамотеев поверь немало |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |