一个循环递归遍历问题

时间:2021-01-11 22:02:31

数据结构模型如下:

public Class A
{
public string Name{get;set;}
public list<A> children{get;set;}
}

现要寻找一个子节点,目前代码如下:

        public A FindByName(string _name)
{
if (this.Name == _name)
return this;
else
{
for (int i = 0; i < this.children.Count; i++)
return this.children[i].FindByName(_name);
}
return null;
}

但是,VS编译器一直提示 i++是 "Unreachable code detected".

其运行结果也相差很多,这个循环只遍历了第0个孩子,孙子。。。

现正确的做法如下:

        public A FindByName(string _name)
{
if (this.Name == _name)
return this;
else
{
A p
= null;
for (int i = 0; i < this.children.Count; i++)
{
p
= this.children[i].FindByName(_name);
if (p != null)
break;
}
return p;
}
}