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

本文介绍了一个使用C#实现的递归方法,该方法用于从数据库中获取数据并构建树状结构。通过递归调用自身来遍历所有层级的数据节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值