当前位置:编程学习 > C#/ASP.NET >>

谁帮我把这三层循环变成递归?


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

谁帮我把这三层循环变成递归?
--------------------编程问答-------------------- 不知道你要干什么,,为什么要那样写?
直接这样就可以了,,

  private StringBuilder s = new StringBuilder();
            List<int> source = ReadParam();
            foreach (var i in source)
            {   
                        s.AppendFormat("{0}", ((char)i).ToString());
                        s.Append("\r\n");
            }
--------------------编程问答-------------------- 你这类似排列组合给你个参考,自己体会http://www.cnblogs.com/rogerwei/archive/2010/11/18/1880336.html --------------------编程问答-------------------- 這個用遞歸實行有點困難.i,j的值要保留. --------------------编程问答--------------------
引用 1 楼  的回复:
不知道你要干什么,,为什么要那样写?
直接这样就可以了,,

C# code
  private StringBuilder s = new StringBuilder();
            List<int> source = ReadParam();
            foreach (var i in source)
            {   
        ……

你这个只有一轮,只是把这个数组遍历了一遍,而我的要求是:任意取这个数组中一个值,组成三位的字符串。
比如source内容是{1,2,3},我要取的是"111"、"112","113","121","122",....... --------------------编程问答--------------------
引用 2 楼  的回复:
你这类似排列组合给你个参考,自己体会http://www.cnblogs.com/rogerwei/archive/2010/11/18/1880336.html

谢谢,我看看。 --------------------编程问答-------------------- http://blog.csdn.net/happy09li/article/details/7715858 --------------------编程问答--------------------
引用 6 楼  的回复:
http://blog.csdn.net/happy09li/article/details/7715858



谢谢,我看下。 --------------------编程问答-------------------- 递归得用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);
                }
            }
        }
--------------------编程问答--------------------


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);
      }
    }
  }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,