递归问题,大家来看看为什么啊?
static void Main(string[] args)
{
string myst = "ABCDEF";
List<string> myresult = new List<string>();
for (int i = 1; i < myst.Length; i++)
{
myresult.AddRange(fun(i, myst).ToArray());
}
foreach (var a in myresult)
{
Console.WriteLine(a);
}
Console.ReadLine();
}
public static List<string> fun(int n,string myst)
{
if (n > 1)
{
List<string> myreturn = new List<string>();
foreach (var a in fun(n - 1,myst))
{
for (int i = a.LastIndexOf(',') + 1; i <a.Length-1; i++)
{
string retu = a.Insert(i+1 , ",");
myreturn.Add(retu);
}
}
return myreturn;//用A 或者BB 替换编译试下
// A:return myreturn.AddRange(fun(n - 1, myst).ToArray());
//B: myreturn.AddRange(fun(n - 1, myst).ToArray());
// return myreturn;
}
if (n == 1)
{
List<string> myresult = new List<string>();
for (int i = 1; i < myst.Length-1; i++)
{
string result = myst.Insert(i, ",");
myresult.Add(result);
}
return myresult;
}
else
return null;
}
情况A 编译无法通过 情况B 顺利通过,结果也正确 ??????? 这是为什么啊?????????