嵌套循环在招募功能中没有正确运行

时间:2017-03-31 18:34:56

标签: c++

嵌套循环的外循环在招募功能中没有正确运行。 简化示例:

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


                }
            }
        }

1 个答案:

答案 0 :(得分:0)

使用您最初发布的代码:

除非max为0,否则此代码将因无限递归而导致堆栈溢出:递归中的第一次迭代将立即以a和b再次为0来递归调用该函数。

修改后的代码:

深度限制递归并避免无限递归。

但是,在第一次外部迭代后,b已达到最大值。对于a循环中的所有连续迭代,当你不重置b时,内循环立即停止