string[] A=new string[]{"a","b","c"};
            string[] B=new string[]{"j","k"};
            string[] C=new string[]{"x","y","z"};            for (int i = 0; i < A.Length; i++)
            {
                for (int j = 0; j < B.Length; j++)
                {
                    for (int k = 0; k < C.Length; k++)
                    {
                        Response.Write(A[i]+B[j]+C[k]);
                    }
                }
            }现在是数组ABC 后边数量不固定 D E  F...  要怎么弄呢

解决方案 »

  1.   

    数组都是 Array 的子类
      

  2.   

    就是一个笛卡尔积,还以为多高深。笛卡尔积运算是左连接的,所以本质上就等同于:
    for ( int i = 0; i < x; i ++ )
      r += i;当然有些递归控喜欢写:
    int Compute( int i )
    {
      if ( i == 1 )
        return 1;
      return i + Compute( i - 1 )
    }
    里面唯一麻烦的事情是怎么让元素和元组等同起来,其实这个也不难。
      

  3.   

    嵌套循环最终都可以使用递归替代。不过递归可能会有堆栈溢出。数据不能太大。private static void Test01()
    {
        List<string[]> datas = new List<string[]>();
        string[] A = new string[] { "a", "b", "c" };
        string[] B = new string[] { "j", "k" };
        string[] C = new string[] { "x", "y", "z" };
        datas.Add(A);
        datas.Add(B);
        datas.Add(C);
        MessageBox.Show(look("", 0, datas).TrimEnd(",".ToArray()));
    }private static string look(string s, int i, List<string[]> datas)
    {
        StringBuilder builder = new StringBuilder();
        foreach (string item in datas[i])
        {
            if (i < datas.Count - 1) builder.Append(look(s + item, i + 1, datas));
            else builder.Append(s + item + ",");
        }
        return builder.ToString();
    }