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

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

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

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

18.09.2012, 20:22. Просмотров 517. Ответов 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;      
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2012, 20:22     Почему по ретурну не выходит из функции С++
Посмотрите здесь:

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

Почему прога не выходит из цикла? - 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; ...

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

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

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

Почему выходит за пределы массива? - 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
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
18.09.2012, 20:29     Почему по ретурну не выходит из функции С++ #2
Цитата Сообщение от Wolkodav Посмотреть сообщение
Почему по ретурну не выходит из функции С++
Видимо потому, что она рекурсивная.
DrobyshevAlex
1169 / 1119 / 16
Регистрация: 31.05.2012
Сообщений: 3,059
18.09.2012, 20:31     Почему по ретурну не выходит из функции С++ #3
Может вы не понимаете как работает рекурсия?
По ретурну по любому выходит из функции.
Просто функция вызывает саму себя много раз, например вызвалось 10 раз внутри, тогда первый раз ретурн вернёт из 10 функции, второй раз из 9 и так далее...
А вот когда дойдёт до ретурна, той функции которая была вызвана "из вне" вот тогда и будет выход из функции который вы ожидаете
DU
1482 / 1058 / 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;      
 
 
   // тут тоже что-то нужно вернуть.
 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2012, 20:52     Почему по ретурну не выходит из функции С++
Еще ссылки по теме:

Почему вместо вектора 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++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; const int n=2; struct a1{ //объявляем структуру char...

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

Не выходит из функции - C++
Здравствуйте. В конце функции есть строка return true; При вызове этой функции программа зацикливается. То есть если поставить точку...

Найти ошибку в коде, он у меня матрицу должен вывести и колличество положительных элементов но рандомом он только 0 выходит почему? - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;ctime&gt; using namespace std; int main(){ int a; int b; int i = 0,j = 0; ...

А почему ошибка, что функции print и read не определены в функции main()? - C++
Что-то не понимаю. Они определены в заголовочном файле. А подчеркивается красным что нет.... #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Wolkodav
602 / 455 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.09.2012, 20:52  [ТС]     Почему по ретурну не выходит из функции С++ #5
Тьфу блин,
DrobyshevAlex, рекурсию я понимаю.
Тьфу блин точно, забыл ретурны поставить, что-то глаз замылился немного, вот и пропустил, простите дурака, спасибо большое!!!
Yandex
Объявления
18.09.2012, 20:52     Почему по ретурну не выходит из функции С++
Ответ Создать тему
Опции темы

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