|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.05.2009, 00:28 | #1 |
Пользователь
Регистрация: 01.12.2008
Сообщений: 58
|
(С++) Рекурсия
Всем доброго времени суток! Раньше никогда не использовал рекурсию, однако считал ее аналогом цикла, более ресурсоемкого, но изящного. Однако теперь захотелось попробовать поработать с бинарными деревьями (сразу говорю - лаба не обязательная )
Итак..в методичке приведена функция для обхода ВСЕГО дерева: Подскажите, плиз, как она работает...и как мы можем вообще попасть в строчку walkTree(p->pright);. Заранее спасибо! Код:
|
23.05.2009, 00:36 | #2 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Код:
Цитата:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
23.05.2009, 00:46 | #3 | |
Пользователь
Регистрация: 01.12.2008
Сообщений: 58
|
Цитата:
|
|
23.05.2009, 00:53 | #4 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
23.05.2009, 01:04 | #5 |
Пользователь
Регистрация: 01.12.2008
Сообщений: 58
|
Хмм...начинаю понимать Тоесть сколько раз функция вызывает саму себя - столько раз она запоминает своё состояние? Если да - то как? Копирует свой код + параметры в оперативную память, или иначе? И если всё так - то, как же нам насовсем выйти из функции (не именно из этой, а из любой рекурсивной)? Что даст return? Переход на 1 функцию вверх или выход из всей рекурсивной функции целиком?
|
23.05.2009, 01:09 | #6 | ||
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Таким образом ничто не потеряется. Цитата:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
||
23.05.2009, 01:20 | #7 |
Пользователь
Регистрация: 01.12.2008
Сообщений: 58
|
Sazary Спасибо! Теперь почти всё стало ясно Остаётся 1 вопрос. Можем ли мы вернуться на несколько уровней функции выше "вручную" ? Допустим функция погрузилась на 7 уровней рекурсии. а нам стал очень нужен 2-й. Можем ли мы как-то на него перейти?
|
23.05.2009, 01:36 | #8 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Интересно, а зачем вам может понадобиться вернуться на несколько уровней? Собственно, ведь рекурсия обычно и используется там, где нужно последовательно обойти все вершины (или еще что-то).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
23.05.2009, 01:50 | #9 |
Пользователь
Регистрация: 01.12.2008
Сообщений: 58
|
Честно говоря, где используется рекурсия не знал, так как мы с ней только знакомимся. Поэтому и хочется узнать о том, как ее можно использовать по максимуму А задание очень интересное. К счастью лаба не обязательная, но сделать хочется.
Задание: Построить бинарное дерево выражений для заданного выражения: ((3+4)*(8-(3*2)))*(9*(7+4)) |
23.05.2009, 02:01 | #10 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Troi666, ну попробуйте
С деревьями знаком довольно поверхностно, поэтому поиск вам больше подскажет )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рекурсия. | p@ul | Помощь студентам | 4 | 30.12.2009 14:46 |
Рекурсия | Claster | Помощь студентам | 7 | 24.09.2008 20:52 |
рекурсия | Vital_k | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 08.02.2008 13:09 |
Рекурсия | АнНютик | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 29.01.2008 22:50 |
Рекурсия | Pravednik | Помощь студентам | 3 | 21.01.2008 14:18 |