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

Прерывание работы рекурсионной функции типа void - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не получается изменить данные в бинарном файле http://www.cyberforum.ru/cpp-beginners/thread968052.html
Здравствуйте. Мучаюсь, не пойму как сделать чтобы изменить данные. Программа обращается к файлу с базой (структуре).В структуре счет, фамилия, имя, баланс. Все функции прописал, а функцию "удалить...
C++ Найти максимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы #include <iostream> #include <iomanip> #include <conio.h> #include <math.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread968041.html
Замена фона в C++ C++
У меня есть консольное приложение, как поменять в нем фон что бы выводило вместо сетки глубины - зеленый фон.
C++ Пустая консоль
Когда открываешь программу(после компиляции на dev-c++), то появляется пустая консоль, на которой ничего не отображается. #include <iostream> using namespace std; int main() { int x; ...
C++ Задача на двумерные массивы http://www.cyberforum.ru/cpp-beginners/thread967983.html
омогите пожалуйста наброски есть Дана целочисленная квадратная матрица. Определить: 1) сумму элементов в тех строках, которые не содержат отрицательных элементов; минимум среди сумм...
C++ Разработка с разветвлениями.Составные условия Определить сумму налога на доходы, который необходимо оплатить, если процент отчислений зависит от суммы дохода. Если доход не превышает суммы 500, то процент составляет P1, если доход не превышает... подробнее

Показать сообщение отдельно
Greeezly
6 / 6 / 1
Регистрация: 31.08.2012
Сообщений: 230

Прерывание работы рекурсионной функции типа void - C++

03.10.2013, 14:25. Просмотров 440. Ответов 7
Метки (Все метки)

Есть рекурсионная функция, имеющая нечто общее с функцией ниже:

C++
1
2
3
4
5
6
7
8
9
void function test(int b)
{
int a;
a = b;
a++;
if (a == 10)
     return;
test(a);
}
Так вот, почему-то моя функция не прерывается ретурном..

вот мой код:
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
void quick_sort_helper(int *sf_mass,int in, int out, int n) //на вход (массив, номер 1го, номер N-го, размер массива)
{
    int a,b,p,mid, size;
    size = out - in;
    a = in;
    b = out - 1;
    mid = out;
    if ((size) < 1)
        return ;
    if (((size) == 1)&&(b == (n-1))) // (*)
    {
        std::cout<<"b = "<<b<<std::endl;
        return ;
    }
    else
    {
    p = sf_mass[mid];
    do
    {
        while (sf_mass[a] < p) a++;
        while ((sf_mass[b] > p)&&(b > in)) b--;
        
        if (a<b)
        {
            apmath_easyfunc::swap_int(&(sf_mass[a]),&(sf_mass[b]));
        }
    }   while (a<b);
    if (sf_mass[a] > sf_mass[mid])
        apmath_easyfunc::swap_int(&(sf_mass[a]),&(sf_mass[mid]));
    if (b > in) quick_sort_helper(sf_mass, in, b, n);
    if (a < n) quick_sort_helper(sf_mass, a, n, n);
    }
}
по идее, когда указатель а доходит до N-го элемента, if, помеченный звездочкой, должен выкинуть меня из функции, этого не происходит, и каким -то неведомым мне образом, сортировка еще несколько раз вызывается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru