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

Рекурсивный спуск - Функция не останавливается на "else return" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа для создания и управления порталом (наподобие siteedit) http://www.cyberforum.ru/cpp-beginners/thread1240316.html
Здравствуйте! Нужно сделать прогу для создания и управления порталом за основу можно взять прогу siteedit (http://siteedit.ru/) Подскажите какие нужны специалисты для создание программы на подобие siteedit. На ваш взгляд, сколько потребуется людей для создания такой проги за два месяца. Спасибо.
C++ Реализация выхода из консольного приложения после нажатия любой клавиши суть задачки- написать таймер для консоли с возможностью остановки при нажатии любой клавиши. таймер написал, как реализовать остановку понятия не имею. пишу в VS2012 если что. http://www.cyberforum.ru/cpp-beginners/thread1240306.html
Как отследить утечку памяти? C++
Как в vs(ну или в общем) отследить учтечку памяти? То есть если было выделено память под что то с помощь new и по каким то причинам не было освобождено.
Bind vector<vector<A*>> C++
Привет всем ! вот код struct A { void qwer(int a) { qDebug()<<a; } }; int main(int argc, char *argv)
C++ Как получить доступ к указателям в контейнере map? http://www.cyberforum.ru/cpp-beginners/thread1240202.html
Здравствуйте, не как не могу разобратся с контейнером map, вот я создаю 2 таких контейнера std::map<std::string, SDL_Texture*> TextureContainer; std::map<std::string, SDL_Surface*> SurfaceContainer; Выполняю SurfaceContainer = Surface; TextureContainer = SDL_CreateTextureFromSurface(LocalRender, SurfaceContainer); if (TextureContainer == NULL) { std::cerr << "Could...
C++ Отличия в C++11 для новичка Недавно увидел что в 2011 был принят какой-то новый стандарт языка програмирования C++(C++11).Я сам сейчас изучаю этот язык по "C++ Вводный курс,четвертое издание С.Липпман"(2005 г.).И вот возник вопрос.Надо ли мне совсем новичку быстро перепрыгивать с этой книги на какую-небудь другую(с описанием C++11) или продолжать эту?Я изучил уже чуть больше ста страниц поэтому перепрыгивать как-то не... подробнее

Показать сообщение отдельно
pavlikzlo
0 / 0 / 0
Регистрация: 09.08.2014
Сообщений: 3
09.08.2014, 12:54     Рекурсивный спуск - Функция не останавливается на "else return"
не могу понять, почему функция не останавливается на "else return *(a+mid);"
делал отладку, после этого return'a происходит еще два вызова? и в итоге возвращает -1

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using namespace std;
#include <iostream>
 
 
int search ( int *a, int nel, int k )
{
    int mid = 0, high = nel - 1, low = 0;
    
        mid = ( low + high )/2;
    
        cout << "My number is:" << *( a + mid ) << endl;
    
        if (*(a + mid) > k)
        
            search (a, high - mid, k);
        
        else
            if (*(a + mid) < k)
 
                search ( a + mid + 1, high - mid, k);
            
            else return *(a + mid);
    
    
    
    return -1;
}
 
 
 
 
int main () {
    
    int *array = new int;
    int el, size;
    
    cout << "Put size of your array:" << endl;
    cin >> size;
    cout << "Now put your first element:" << endl;
    cin >> el;
    
    for (int i = 0 ; i < size ; i++ )
    {
        *(array + i ) = el++;
        cout << *(array + i)<< " ";
    }
    cout << endl;
    cout << search ( array, size, 9);
    
    
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru