嵌套循环在重新函数内未正常运行



嵌套循环的外循环在重新函数内未正常运行。简化示例:

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

                }
            }
        }

使用您最初发布的代码:

除非 max 为 0,

否则此代码将因无限递归而导致堆栈溢出:递归中的第一次迭代将立即递归地调用函数,从 a 和 b 再次为 0 开始。

使用修改后的代码:

深度限制了递归,避免了无休止的递归。

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

相关内容

最新更新