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

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

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

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

18.09.2012, 20:22. Просмотров 479. Ответов 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++ Почему прога не выходит из цикла?
C++ Найти ошибку в коде, он у меня матрицу должен вывести и колличество положительных элементов но рандомом он только 0 выходит почему?
Не выходит из функции C++
Почему вместо вектора 2х5 выходит 2х9 C++
ошибок в компиляции нет, а при работе выходит ошибка, почему? C++
почему не выходит двойной массив? с++ C++
Почему не правильно работает? Даже в ручную все просчитала, не выходит! C++
Почему не работает счетчик в функции? C++
C++ Почему выходит ошибка (структура)
C++ Почему рандом не выходит?
Почему выходит за пределы массива? C++
C++ О работе new, почему выходит ошибка?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4869 / 3008 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
18.09.2012, 20:29     Почему по ретурну не выходит из функции С++ #2
Цитата Сообщение от Wolkodav Посмотреть сообщение
Почему по ретурну не выходит из функции С++
Видимо потому, что она рекурсивная.
DrobyshevAlex
1166 / 1116 / 16
Регистрация: 31.05.2012
Сообщений: 3,059
18.09.2012, 20:31     Почему по ретурну не выходит из функции С++ #3
Может вы не понимаете как работает рекурсия?
По ретурну по любому выходит из функции.
Просто функция вызывает саму себя много раз, например вызвалось 10 раз внутри, тогда первый раз ретурн вернёт из 10 функции, второй раз из 9 и так далее...
А вот когда дойдёт до ретурна, той функции которая была вызвана "из вне" вот тогда и будет выход из функции который вы ожидаете
DU
1479 / 1055 / 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;      
 
 
   // тут тоже что-то нужно вернуть.
 
}
Wolkodav
 Аватар для Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.09.2012, 20:52  [ТС]     Почему по ретурну не выходит из функции С++ #5
Тьфу блин,
DrobyshevAlex, рекурсию я понимаю.
Тьфу блин точно, забыл ретурны поставить, что-то глаз замылился немного, вот и пропустил, простите дурака, спасибо большое!!!
Yandex
Объявления
18.09.2012, 20:52     Почему по ретурну не выходит из функции С++
Ответ Создать тему
Опции темы

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