在C ++

时间:2018-05-24 06:13:37

标签: c++ recursion

所以我试图弄清楚如何完全摆脱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 :(得分:-1)

    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;
    }