嵌套循环的外循环在招募功能中没有正确运行。 简化示例:
uint max =3;
void func(uint a,uint b,uint depth){
for(; a<max; a++){ // problem here after first recrusion , counting but not going inside braces with recruisive function
for(; b<max; b++){ // inner loop works in recruisive function well
if(depth<2){
func(0,0,depth+1);
}
}
}
}
答案 0 :(得分:0)
使用您最初发布的代码:
除非max为0,否则此代码将因无限递归而导致堆栈溢出:递归中的第一次迭代将立即以a和b再次为0来递归调用该函数。
修改后的代码:
深度限制递归并避免无限递归。
但是,在第一次外部迭代后,b已达到最大值。对于a循环中的所有连续迭代,当你不重置b时,内循环立即停止