private StringBuilder s = new StringBuilder();
            List<int> source = ReadParam();
            foreach (var i in source)
            {
                foreach (var j in source)
                {
                    foreach (var k in source)
                    {
                        s.AppendFormat("{0}", ((char)i).ToString());
                        s.AppendFormat("{0}", ((char)j).ToString());
                        s.AppendFormat("{0}", ((char)k).ToString());
                        s.Append("\r\n");
                    }
                }
            }谁帮我把这三层循环变成递归?

解决方案 »

  1.   

    不知道你要干什么,,为什么要那样写?
    直接这样就可以了,,  private StringBuilder s = new StringBuilder();
                List<int> source = ReadParam();
                foreach (var i in source)
                {   
                            s.AppendFormat("{0}", ((char)i).ToString());
                            s.Append("\r\n");
                }
      

  2.   

    你这类似排列组合给你个参考,自己体会http://www.cnblogs.com/rogerwei/archive/2010/11/18/1880336.html
      

  3.   

    你这个只有一轮,只是把这个数组遍历了一遍,而我的要求是:任意取这个数组中一个值,组成三位的字符串。
    比如source内容是{1,2,3},我要取的是"111"、"112","113","121","122",.......
      

  4.   

    http://blog.csdn.net/happy09li/article/details/7715858
      

  5.   

    递归得用for循环。应该符合你的要求。 
    Fun(0,0);public  void Fun( int i,int j)
            {
                for (int k = 0; k < source.Count; k++)
                {
                    s.AppendFormat("{0}", ((char)i).ToString());
                    s.AppendFormat("{0}", ((char)j).ToString());
                    s.AppendFormat("{0}", ((char)k).ToString());
                    s.Append("\r\n");
                }
                j++;            if (j < source.Count)
                {
                    Fun(i, j);
                }
                else
                {
                    i++;
                    if (i < source.Count)
                    {
                        j = 0;
                        Fun(i, j);
                    }
                }
            }
      

  6.   

    Fun(0,0);
    public void Fun( int i,int j)
      {
        for (int k = 0; k < source.Count; k++)
        {
           s.AppendFormat("{0}", ((char)i).ToString());
           s.AppendFormat("{0}", ((char)j).ToString());
           s.AppendFormat("{0}", ((char)k).ToString());
           s.Append("\r\n");
        }
        j++;    if (j < source.Count)
        {
           Fun(i, j);
        }
        else
        {
          i++;
          if (i < source.Count)
          {
             j = 0;
             Fun(i, j);
          }
        }
      }