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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
#1

Почему по ретурну не выходит из функции С++ - C++

18.09.2012, 20:22. Просмотров 521. Ответов 4
Метки нет (Все метки)

Народ помогите, вот функция поиска в дереве узла, делал рекурсивно, так быстрее и удобнее, но появилась проблема, не выходит из функции по ретурну( проверял в дебаге) помогите, что сделал не так.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Tree* Found(Tree* branch,int key)
{
    if (branch->key<key)
        if (branch->right!=0)
            Found(branch->right,key);
        else
            return branch;      
    if (branch->key>key)
        if (branch->left!=0)
            Found(branch->left,key);
        else
            return branch;      
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2012, 20:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему по ретурну не выходит из функции С++ (C++):

Почему рандом не выходит? - C++
Уже столько примеров просмотрел здесь и все равно не доходит. Ну что здесь не так? #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include...

О работе new, почему выходит ошибка? - C++
Делал задачи на степеке, не могу понять следующий момент: Вылезает ошибка такая же если в массив добавить больше символов чем его размер....

почему не выходит двойной массив? с++ - C++
Доброго времени суток. Воть...но вместо двойного массива на консоль выводит одни нули столбцом. Что не так? #include &lt;vcl.h&gt; #include...

Почему выходит ошибка (структура) - C++
Цель: Создать структуру с данными телефона (модель - ОС - цена) Позже подключу сортировку. Код компилируется, программа запускается,...

Почему прога не выходит из цикла? - C++
#include &lt;stdio.h&gt; int main () {unsigned int s,a,k,n,min,max,kol; min=0; a=0; s=0; kol=0; max=0; ...

Почему выходит за пределы массива? - C++
vector &lt;int&gt; c; for(int w=0;w&lt;100;w++) { c=rand()%100; } int j,i,m; while(j&lt;(c.size()-1)) { while(i&lt;(c.size()-1)) { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
18.09.2012, 20:29 #2
Цитата Сообщение от Wolkodav Посмотреть сообщение
Почему по ретурну не выходит из функции С++
Видимо потому, что она рекурсивная.
0
DrobyshevAlex
1169 / 1119 / 16
Регистрация: 31.05.2012
Сообщений: 3,059
18.09.2012, 20:31 #3
Может вы не понимаете как работает рекурсия?
По ретурну по любому выходит из функции.
Просто функция вызывает саму себя много раз, например вызвалось 10 раз внутри, тогда первый раз ретурн вернёт из 10 функции, второй раз из 9 и так далее...
А вот когда дойдёт до ретурна, той функции которая была вызвана "из вне" вот тогда и будет выход из функции который вы ожидаете
1
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
18.09.2012, 20:37 #4
надо сказать что и ретурны пропущены:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Tree* Found(Tree* branch,int key)
{
    if (branch->key<key)
        if (branch->right!=0)
            return Found(branch->right,key); // тут
        else
            return branch;      
    if (branch->key>key)
        if (branch->left!=0)
            return Found(branch->left,key); // тут
        else
            return branch;      
 
 
   // тут тоже что-то нужно вернуть.
 
}
1
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.09.2012, 20:52  [ТС] #5
Тьфу блин,
DrobyshevAlex, рекурсию я понимаю.
Тьфу блин точно, забыл ретурны поставить, что-то глаз замылился немного, вот и пропустил, простите дурака, спасибо большое!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2012, 20:52
Привет! Вот еще темы с ответами:

Понять почему алгоритм выходит за рамки массива - C++
возникли проблемы... Не могу понять почему алгоритм выходит за рамки массива. &quot;Из произвольного текста, содержащего не более 10...

Почему вместо вектора 2х5 выходит 2х9 - C++
Почему вместо вектора 2х5 выходит 2х9? #include &quot;wnd_rus.h&quot; #include &lt;iostream&gt; #include &lt;vector&gt; struct point { int dist,...

Почему не правильно работает? Даже в ручную все просчитала, не выходит! - C++
Вот такая маленькая программа. Вводится массив символов, нужно записать в отдельный массив числа из этой строки. То есть на входе имеем...

ошибок в компиляции нет, а при работе выходит ошибка, почему? - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; const int n=2; struct a1{ //объявляем структуру char...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.09.2012, 20:52
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru