谁帮我把这三层循环变成递归?
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();--------------------编程问答-------------------- 你这类似排列组合给你个参考,自己体会http://www.cnblogs.com/rogerwei/archive/2010/11/18/1880336.html --------------------编程问答-------------------- 這個用遞歸實行有點困難.i,j的值要保留. --------------------编程问答--------------------
List<int> source = ReadParam();
foreach (var i in source)
{
s.AppendFormat("{0}", ((char)i).ToString());
s.Append("\r\n");
}
你这个只有一轮,只是把这个数组遍历了一遍,而我的要求是:任意取这个数组中一个值,组成三位的字符串。
比如source内容是{1,2,3},我要取的是"111"、"112","113","121","122",....... --------------------编程问答--------------------
谢谢,我看看。 --------------------编程问答-------------------- 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#