怎么根据参数决定循环的层数
比如,我要实现这样的功能
- C# code
private void fun(int[] arr){ int n = arr.Length; int[] i = new int[n]; for(i[0]=0; i[0]<arr[0]; i[0]++) { for(i[1]=0; i[1]<arr[1]; i[1]++) { ...// 这里该怎么写? for(i[n-1]=0; i[n-1]<arr[n-1]; i[n-1]++) { fun2(i); //这里的参数是i } } }}
中间那个循环该怎么实现呢?
[解决办法]
- C# code
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { int[] arr = new int[] { 3, 2, 4 }; fun(arr); } static private void fun(int[] arr) { fun1(arr, null, 0); } static private void fun1(int[] arr, int[] a2, int i) { if (a2 == null) a2 = new int[arr.Length]; if (i < arr.Length) { for (int j = 0; j < arr[i]; ++j) { a2[i] = j; fun1(arr, a2,i + 1); } } else { func2(a2); } } static private void func2(int[] a2) { Console.WriteLine(string.Format("{0} {1} {2}", a2[0], a2[1], a2[2])); } }}运行结果:0 0 00 0 10 0 20 0 30 1 00 1 10 1 20 1 31 0 01 0 11 0 21 0 31 1 01 1 11 1 21 1 32 0 02 0 12 0 22 0 32 1 02 1 12 1 22 1 3请按任意键继续. . .