![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 05.06.2010
Сообщений: 154
|
![]()
Вот процедура прямого обхода дерева.
Код:
Если не выполняется probh(node.pRight); Но вот не могу понять как это происходит. Они же в одном begin-end стоят. Помогите разобраться |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Не можешь понять, потому что неправильно трактуешь.
Если условие выполняется, то они вызываются оба. Один за другим - ровно как и написано. Если условие не выполняется, то мало того, что ни один из них не вызывается, так ещё и в form1.Edit1.Text ничего не приписывается.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#3 |
Веб-дизайнер
Форумчанин
Регистрация: 11.08.2011
Сообщений: 305
|
![]()
googl, присоединившись к предыдущему оратору разъясню:
Код:
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 05.06.2010
Сообщений: 154
|
![]() Цитата:
вот посмотрите программу |
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 05.06.2010
Сообщений: 154
|
![]()
Поставьте точку останова при записывании в едит и дальше выполняйте пошагово. процедура же заново вызывается, поэтому до Right не доходит. а Right выполняется только тогда когда nil вот я и не пойму. Это же все из-за рекурсии. я просто не пойму каким образом это происходит. вы не поняли суть
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
наверно потому что вы не доглядели что при рекурсии вы вечно входите в эту же функцию снова и снова?
и пока не будет условие false, вы не увидите перехода ко второму вызову самого себя. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#7 |
Веб-дизайнер
Форумчанин
Регистрация: 11.08.2011
Сообщений: 305
|
![]()
Может быть так:
Код:
|
![]() |
![]() |
![]() |
#8 | ||
Форумчанин
Регистрация: 05.06.2010
Сообщений: 154
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#9 |
Веб-дизайнер
Форумчанин
Регистрация: 11.08.2011
Сообщений: 305
|
![]()
googl, честно говоря я не понимаю Вашего условия. Как можно сделать какую-либо операцию с Node если его значение равно nil? (Вы пытаетесь сделать vyvod(node.pLeft,tmpItem) при пустом узле, зачем?)
|
![]() |
![]() |
![]() |
#10 | |
Форумчанин
Регистрация: 05.06.2010
Сообщений: 154
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа не работает в Code Block, не пойму почему. | Stunt Man | Помощь студентам | 1 | 03.06.2011 19:38 |
Не пойму зачем не работает?! | Jone200991 | Помощь студентам | 0 | 31.05.2011 14:45 |
Не пойму как работает цикл | Lotles | Общие вопросы C/C++ | 4 | 29.11.2010 02:08 |
не пойму правильно ли работает программа | серг | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 13.05.2010 14:58 |
Паскаль. рекурсия. числа. объясните, как работает код | [silver beast] | Помощь студентам | 2 | 21.01.2009 05:00 |