这是一篇关于算法方面电大毕业论文范文,与递归算法在WEB程序中的应用相关毕业论文格式模板。是参考文献专业与算法及数据结构及数据库方面相关的免费优秀学术论文范文资料,可作为算法方面的大学硕士与本科毕业论文开题报告范文和职称论文论文写作参考文献下载。
摘 要 :本文剖析了递归算法的执行原理,以ASP.NET应用程序中的TreeView控件读取商品类别信息为例展现了递归算法的灵活应用,体现了递归算法为WEB程序设计带来的便利性.
关 键 词 :递归算法 ASP.NET应用程序 TreeView控件
一、递归算法执行原理
递归算法是一种直接或者间接地调用自身算法的过程.在程序设计中选择递归算法的原则是:复杂问题可以分解为简单问题进行求解,而每次求解的方法相同,且每次算法在调用规模上都有所缩小,前一次调用为后一次调用做准备,在问题的规模极小或某个(些)条件达到时可以直接得到解答而不再进行递归调用,即递归算法必须有一个明确的递归结束条件,称为递归出口.递归算法结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便.
二、递归算法在WEB程序中的应用
(一)递归算法应用分析
Inter的快速发展使得WEB程序广泛应用到社会的各行各业,如企业网站、网上购物、网上订票等.而在WEB程序的开发中,动态的生成树状导航是程序员在代码设计中面临的难题.树状导航结构由树的根及多个子树构成,子树又由下一级子树构成,最底层是叶子节点,构造树的过程和构造子树的过程相同.因此,树状导航结构采用递归算法来生成的代码更简单、清晰.
(二)递归算法设计与实现
根据以上分析,以ASP.NET应用程序中的TreeView控件(命名为tv_menu)读取商品类别信息表为例,设计了动态生成树状导航结构的递归算法.数据库Product中的商品类别表ProdClass的数据结构如表1所示.
该算法在.cs文件中实现,具体代码如下:
//TreeView控件所在页面的加载事件
protected void Page_Load(object sender, EventArgs e)
{ if (!Page.IsPostBack){
tv_bind();}
}
//通过数据访问对象读取商品类别表中的数据
public void tv_bind()
{
SqlConnection 等于 new SqlConnection(
"server等于localhost;database等于Product;Integrated Security等于true;");
SqlCommand m 等于 new SqlCommand();
m.CommandText 等于 "select * from ProdClass";
m.Connection 等于 ;
SqlDataAdapter da 等于 new SqlDataAdapter(m);
DataSet ds 等于 new DataSet();
da.Fill(ds);
InitTree(tv_menu.Nodes, "0",ds);
}
// 递归算法:实现TreeView控件的动态绑定
public void InitTree(TreeNodeCollection Nds, string ParentID,DataSet ds)
{
DataView dv 等于 new DataView();
TreeNode tmpNode;
dv.Table 等于 ds.Tables[0];
dv.RowFilter 等于 "ParentID 等于 " + ParentID ;
foreach (DataRowView drv in dv)
{
tmpNode 等于 new TreeNode();
tmpNode.Value 等于 drv["ClassID"].ToString();
tmpNode.Text 等于 drv["ClassName"].ToString();
tmpNode.NigateUrl 等于 drv["Url"].ToString() + "?ClassID等于" + drv["ClassID"].ToString();
Nds.Add(tmpNode);
this.InitTree(tmpNode.ChildNodes, tmpNode.Value,ds);//递归调用
}
}
三、总结
通过以上实例看到,利用递归算法设计的树状导航控件的数据绑定事件可以随着数据库中数据的变化而变化,实现了树的无限极扩展,而且算法结构清晰、简单.但我们同时要认识到,递归算法具有运行效率低、耗费的计算时间和占用的存储空间都比非递归算法多的缺点.在实际应用中,我们需要权衡它的优缺点,通过恰当的应用来发挥递归算法的优势.