Выход из рекурсии и оригинальной функции в C ++ - PullRequest
0 голосов
/ 24 мая 2018

Итак, я пытаюсь выяснить, как полностью выйти из рекурсивной функции в C ++.

В примере у меня есть двумерный массив, который содержит необходимую информацию, которая является правильной.В случае отсутствия рекурсии все работает как положено - часть, которая возвращает time[start], выходит из функции.

В случае рекурсии, return выходит из текущей рекурсии, но сама функцияпродолжает повторять каждый следующий i из цикла for.Я бы хотел, чтобы функция остановилась в этой точке.

Есть ли способ выйти из функции все вместе?

int findConn(int **computers, int *time, int *connections, int cnt, int k, int start){
    for (int i=0; i<cnt; i++){
        if ((computers[k][i]!=0)&&(i!=start)&&(i!=k)){
            if(computers[start][i]!=0){
                time[start]++;
                return time[start];
            } else {
                time[start]++;
                k=i;
                findConn(computers, time, connections, cnt, k, start);
            }
        }
    }
    return 0;
}

1 Ответ

0 голосов
/ 24 мая 2018
    const int nBreakAll = -1;
    int findConn(int **computers, int *time, int *connections, int cnt, int k, int start){
        for (int i=0; i<cnt; i++){
            ...
            if(break condition)
                 return nBreakAll;
            ....
            if ( nBreakAll  == findConn(...) )
            {
                 return nBreakAll; //this handles the break of recursive loop
            }
            //continues here
            ....

        }
        return 0;
    }
...