递归问题,大家来看看为什么啊?

zhanglong19891129 2012-08-23 04:20:44
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 顺利通过,结果也正确 ??????? 这是为什么啊?????????
...全文
51 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanglong19891129 2012-08-23
  • 打赏
  • 举报
回复
我都结贴 了?你们怎么可能没分????不给你们分我怎么结贴?yonglaixiazaide是25 hjywyj是15
yonglaixiazaide 2012-08-23
  • 打赏
  • 举报
回复
你妹~
yonglaixiazaide 2012-08-23
  • 打赏
  • 举报
回复
这个。。。没分?
shizhu820228 2012-08-23
  • 打赏
  • 举报
回复
你要返回的List<String>
myreturn.AddRange 返回的是VOID,所以报错。
  • 打赏
  • 举报
回复
myreturn.AddRange(fun(n - 1, myst).ToArray())
返回值是void,方法的返回值是string
string=void?
yonglaixiazaide 2012-08-23
  • 打赏
  • 举报
回复
// A:return myreturn.AddRange(fun(n - 1, myst).ToArray());
//B: myreturn.AddRange(fun(n - 1, myst).ToArray());

myreturn.AddRange(fun(n - 1, myst).ToArray());
返回的是一个方法AddRange 这个方法的返回值。。你直接把这个返回值返回了。。你说能通过么?
zhanglong19891129 2012-08-23
  • 打赏
  • 举报
回复
大家来讨论讨论啊?这是为什么啊???????????????????????
zhanglong19891129 2012-08-23
  • 打赏
  • 举报
回复
大家来讨论讨论啊?这是为什么啊???????????????????????

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧