一个简单的递归问题的疑惑

huangma1616 2009-03-24 05:04:16
看代码


/// <summary>
/// 判断一个设备是否是某个设备的子设备
/// </summary>
/// <param name="sub">父设备</param>
/// <param name="par">子设备</param>
/// <returns></returns>
private bool IsParSbBySubSb(DrawBase sub,DrawBase par)
{
bool isSub = false;
if (sub.ParObject != null && sub.ParObject.Count > 0)
{
if (par == sub.ParObject[0])
isSub = true;
else
IsParSbBySubSb(sub.ParObject[0], par);
}
else
isSub = false;
return isSub;
}



很简单的方法,在程序执行到 if (par == sub.ParObject[0])(isSub = true;)的时候,方法应该直接返回true啊?
为什么代码还会继续往下执行(还要执行递归),最后返回false
搞不明白!
...全文
78 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunny906 2009-03-24
  • 打赏
  • 举报
回复
private bool IsParSbBySubSb(DrawBase sub,DrawBase par)
{
bool isSub = false;
if (sub.ParObject != null && sub.ParObject.Count > 0)
{
if (par == sub.ParObject[0])
{
isSub = true;
return; //执行完就返回
}
else
IsParSbBySubSb(sub.ParObject[0], par);
}
else
isSub = false;
return isSub;
}
cja03 2009-03-24
  • 打赏
  • 举报
回复
只从代码看,我是这样认为的:
IsParSbBySubSb(DrawBase sub,DrawBase par)
par是要“查找”的设备
sub是设备“树”

如果本意不是这样,那代码就错了。
ztenv 2009-03-24
  • 打赏
  • 举报
回复
一个par有多个sub,每个sub又有多个par?
汗。。。。。。那你觉得你的递归写得对吗?
cja03 2009-03-24
  • 打赏
  • 举报
回复
        private bool IsParSbBySubSb(DrawBase sub,DrawBase par)
{
bool isSub = false;
if (sub.ParObject != null && sub.ParObject.Count > 0)
{
if (par == sub.ParObject[0])
isSub = true;
else
isSub = IsParSbBySubSb(sub.ParObject[0], par);
}

return isSub;
}
benjaminwu198818 2009-03-24
  • 打赏
  • 举报
回复
   //改成这样子 可能会容易理解些。。。
private bool IsParSbBySubSb(DrawBase sub,DrawBase par)
{
bool isSub = false;
if (sub.ParObject != null && sub.ParObject.Count > 0)
{
if (par == sub.ParObject[0])
return isSub = true;
else
return IsParSbBySubSb(sub.ParObject[0], par);
}
else
return isSub = false;

}


四GG 2009-03-24
  • 打赏
  • 举报
回复
IsParSbBySubSb(sub.ParObject[0], par);
改成
return IsParSbBySubSb(sub.ParObject[0], par);
ztenv 2009-03-24
  • 打赏
  • 举报
回复
方法有问题;肯定有问题;sub.ParObject[0])
IsParSbBySubSb(sub.ParObject[0], par);

111,126

社区成员

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

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

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