不确定多层循环嵌套的简洁写法

作者:滴水穿石 | 创建时间: 2023-05-07
不确定多层循环嵌套的简洁写法

操作方法

相信我们都写过2层for循环。一旦超过3层循环,代码就会很难看,并且增加很多变量和代码。 for(int i=0;i<10;i++) for(int j=0;j<10;j++) for(int k=0;j<10;k++) ... 而有时候我们也不能确定到底需要几层循环嵌套,也就是说这个层数是个变量。这样的代码应该怎么写呢?

这里教你一种递归的简洁写法。 int[] arr = new int[12]; void XunHuan(int j) { if (j == arr.Length) { Console.WriteLine("一次递归结束,计数保存在arr中"); return; } while (arr[j]<3) { XunHuan(j + 1); arr[j]++; if (j + 1 < arr.Length) arr[j + 1] = 0; } }

调用: XunHuan(0);

常量3表示每层的循环次数,循环层数12,可以根据情况设定。太大可能会造成栈溢出,经测试8000左右应该没有问题。

栈空间默认的1M,可以通过调大栈空间来增加调用深度,增加循环层数。例如创建一个新的线程,指定栈空间为8M: Thread thread = Thread(Do, 1024 * 1024 * 8); thread.Start(); void Do() { XunHuan(0); }

点击展开全文

更多推荐