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 将会进行不了,即函数将不会再次调用本身。
递归也就结束了。