c#递归的应用 treeview递归绑定数据

c#递归的应用 treeview递归绑定数据

ID:26465753

大小:234.00 KB

页数:14页

时间:2018-11-27

c#递归的应用 treeview递归绑定数据_第1页
c#递归的应用 treeview递归绑定数据_第2页
c#递归的应用 treeview递归绑定数据_第3页
c#递归的应用 treeview递归绑定数据_第4页
c#递归的应用 treeview递归绑定数据_第5页
资源描述:

《c#递归的应用 treeview递归绑定数据》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、递归在WinForm中的应用最近做项目经常用到递归,刚开始很久没用,不太熟悉,现在研究了下,并写下了学习笔记及开发经验总结。递归热身一个算法调用自己来完成它的部分工作,在解决某些问题时,一个算法需要调用自身。如果一个算法直接调用自己或间接地调用自己,就称这个算法是递归的(Recursive)。根据调用方式的不同,它分为直接递归(DirectRecursion)和间接递归(IndirectRecursion)。比如,在收看电视节目时,如果演播室中也有一台电视机播放的是与当前相同的节目,观众就会发现屏幕里的电视套有一层层的电视画面。这种现象类似于直接递归。如果把两面镜子面对面摆

2、放,便可从任意一面镜子里看到两面镜子无数个影像,这类似于间接递归。一个递归算法必须有两个部分:初始部分(BaseCase)和递归部分(RecursionCase)。初始部分只处理可以直接解决而不需要再次递归调用的简单输入。递归部分包含对算法的一次或多次递归调用,每一次的调用参数都在某种程度上比原始调用参数更接近初始情况。函数的递归调用可以理解为:通过一系列的自身调用,达到某一终止条件后,再按照调用路线逐步返回。递归是程序设计中强有力的工具,有很多数学函数是以递归来定义的。如大家熟悉的阶乘函数,我们可以对n!作如下定义:f(n)=1(n=1)n*f(n-1)(n>=2)一个算

3、法具有的特性之一就是有穷性(Finity):一个算法总是在执行有穷步之后结束,即算法的执行时间是有限的。递归算法当然也是算法,也满足算法的特性,因此递归不可能无限递归下去,总有一个终止条件。对该示例,递归的终止条件是n=1.当n=1是,返回1,不在调用自己本身,递归结束。classProgram{staticvoidMain(string[]args){longresult=function(20);Console.WriteLine(result);Console.ReadLine();}staticlongfunction(longn){if(n==1)//算法终止条件

4、{return1;}returnn*function(n-1);}}递归算法通常不是解决问题最有效的计算机程序,因为递归包含函数调用,函数调用需要时空开销。所以,递归比其他替代选择诸如while循环等,所花费的代价更大。但是,递归通常提供了一种能合理有效地解决某些问题的算法。递归示例(一):遍历二叉树二叉树是一种典型的树形结构,常用到递归算法来遍历。遍历按照根节点的相对顺序可分为前序遍历(DLR)、中序遍历(LDR)、后序遍历(RDL)。对二叉树节点,有数据域存放数据,左孩子和右孩子为引用域存放孩子的引用:左孩子LChhild数据域data右孩子RChild///

5、ary>///二叉树节点//////publicclassNode{privateTdata;//数据域privateNodelChild;//左孩子privateNoderChild;//右孩子publicNode(){data=default(T);lChild=null;rChild=null;}publicNode(Tdata,NodelChild,NoderChild){this.data=data;this.lChild=lChild;this.rCh

6、ild=rChild;}publicNode(NodelChild,NoderChild){data=default(T);this.lChild=lChild;this.rChild=rChild;}publicNode(Tdata):this(data,null,null){this.data=data;}///

///数据域///publicTData{get{returndata;}set{this.data=value;}}//////左孩子///publicNodeLCh

7、ild{get{returnlChild;}set{lChild=value;}}///

///右孩子///publicNodeRChild{get{returnrChild;}set{rChild=value;}}}先假设有以下结构的二叉树:先在构造函数中简单构造下对应的数据:publicNodeA;public遍历二叉树(){A=newNode("A");NodeB=newNode("B");Node
当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。