在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 将会进行不了,即函数将不会再次调用本身。
递归也就结束了。
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 将会进行不了,即函数将不会再次调用本身。
递归也就结束了。
相关文章推荐
- 递归调用---注意什么条件退出递归
- C# 递归TreeView 与根据选择的节点获得整个节点路径
- 递归,根据查询结果动态生成TreeView
- ASP.NET树形控件TreeView的递归绑定
- C# TreeView递归遍历方法
- 递归算法,什么叫递归?
- 递归算法及经典递归例子代码实现
- 递归(动态规划)解决问题的应用方向(就是什么情况下用递归)+启发式优化算法+机器学习基础
- 根据数据库创建TreeView的方法
- 【c++】 递归应用:根据原料清单计算总价
- treeview递归绑定节点
- 【转】Treeview 无限分类非递归终极解决方案
- ping 命令----根据TTL判断对方是什么操作系统
- C#递归增加、删除树节点(TreeView)
- 什么是递归?——浅显易懂
- ASP.net 2005 Treeview 无限分类非地递归终极解决方案
- ASP.net 2005 Treeview 无限分类非地递归终极解决方案
- 树的学习——(递归构建二叉树、递归非递归前序中序后序遍历二叉树、根据前序序列、中序序列构建二叉树)
- 在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
- 用递归,非递归(foreach)加载TreeView节点