您的位置:首页 > 其它

在treeview的递归算法中,它是根据什么退出递归呢?

2007-05-08 15:47 381 查看
public void InitMoldTree(TreeNodeCollection Node,string ParentID) {
if(ParentID=="0")
{
myconn=new SqlConnection(Conn);
myconn.Open();
SQL = "select * from Inst_MoldCode where MoldName<>'0' order by MoldCode asc";
Adapter = new SqlDataAdapter(SQL,Conn);
data = new DataSet();
Adapter.Fill(data,"MoldCode");
myconn.Close();
}
TreeNode TempNode;
DataRow[] rows=data.Tables[0].Select("MoldParentCode='"+ParentID+"'");
foreach(DataRow row in rows)
{
TempNode=new TreeNode();
TempNode.ID=row["MoldCode"].ToString();
TempNode.Text=row["MoldName"].ToString();
TempNode.Target="main";
Node.Add(TempNode);
InitMoldTree(TempNode.Nodes,TempNode.ID);
}
}
这是我的代码,完全成功的,我是去copy下来的,我的意思是说我并没有去判断递归什么时候结束,递归为什么会智能的自动结束呢

xrascal(横刀夺爱)回复于 2005-02-01 17:38:22 得分 20

在这之前,你要先了解递归的含义:
递归是使函数调用其本身。

不知你看到没有?
foreach(DataRow row in rows)
{
TempNode=new TreeNode();
TempNode.ID=row["MoldCode"].ToString();
TempNode.Text=row["MoldName"].ToString();
TempNode.Target="main";
Node.Add(TempNode);
InitMoldTree(TempNode.Nodes,TempNode.ID);
}
在这里,函数调用了本身: InitMoldTree(TempNode.Nodes,TempNode.ID);

当 rows.Length == 0 时,foreach 将会进行不了,即函数将不会再次调用本身。
递归也就结束了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: