C# 多层级for循环递归
使用普通嵌套for循环:
[TestMethod]
public void TestMethod1()
{
string[] str1 = { "大", "中" };
string[] str2 = { "黑", "白", "灰" };
string[] str3 = { "棉", "麻", "丝绸", "雪纺" };
string[] result=fun(str1,str2,str3);
}
public string[] fun(string str1,string str2,string str3)
{
int n = str1.Length * str2.Length * str3.Length;
int m = 0;
string[] str4 = new string[n];
for (int i = 0; i < str1.Length; i++)
for (int k = 0; k < str2.Length; k++)
for (int l = 0; l < str3.Length; l++)
{
str4[m] = str1[i] + str2[k] + str3[l];
m++;
}
return str4;
}
使用递归for循环:
[TestMethod]
public void TestMethod1()
{
string[] str1 = { "大", "中" };
string[] str2 = { "黑", "白", "灰" };
string[] str3 = { "棉", "麻", "丝绸", "雪纺" };
string str = "";
string result = ListRecursively(0, new List<string[]>() { str1, str2, str3 }, "", ref str);
}
private string ListRecursively(int index, List<string[]> matrix, string str, ref string str1)
{
for (int k = 0; k < matrix[index].Length; ++k)
{
string ch = matrix[index][k];
String tmpStr = str + " " + ch;
if (index == matrix.Count - 1)
{
str1 += tmpStr + ",";
}
else
{
printMatrixRecursively(index + 1, matrix, tmpStr, ref str1);
}
}
return str1;
}