所以我试图弄清楚如何完全摆脱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;
}
答案 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;
}