摘 要:递归是设计和描述算法的一种有力的工具,在软件开发中经常会用到这种算法。本文主要介绍了算法好坏的衡量指标,递归算法的构造,并根据实际项目的需求,分析了解决方法,画出了使用的递归函数的流程图,作为项目开发人员研究的依据。
【关键词】递归函数 算法 生成公式
算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令。能够对规定的输入,在有限的时间内获得所要求的输出。同一个问题可以使用不同的算法实现,而算法则有好有坏,不同的算法可能用不同的时间、空间和效率来解决同一个问题。算法的优劣用时间复杂度和空间复杂度来衡量。在软件开发中,算法是最基本的要素,任何复杂问题的解决都需要算法的支撑,在软件开发的详细设计阶段可以使用自然语言、伪代码、流程图、判定树或判定表等多种不同的方法来描述。
1 递归算法的构造
递归是设计和描述算法的一种有力的工具,它在复杂算法的描述中被经常采用,为此其在软件开发中所处的地位是不可替代的。
能采用递归描述的算法通常有这样的特征:求解规模为N的问题,可以用规模较小的问题通过一定的运算或操作构造出来,而这些规模较小的问题也能使用同样的方法进一步使用规模更小的问题构造,当规模小到不能够再次分解时,则应能够直接得解。
一般来讲,递归算法的执行过程分为递推和回归两个阶段。在递推阶段,把规模较大的问题的求解推到规模较小的问题的求解。在回归阶段,当获得最简单情况的解后,逐级返回,依次得到规模稍大一级的解。
2 应用需求
在现实生活中,有很多应用都需要用到递归算法,最经典的需求如“汉诺塔”,这是一款比较古老的游戏,而这个游戏的解就可以用递归算法求得。笔者在给丹东××公司开发软件的时候遇到了一种需求,这种需求就需要用到递归算法。需求的具体内容如下:
在软件中设置变量数量、参与的运算符和最多参与的变量数量,编程生成所有的可行公式,然后根据实际的测量结果验证公式,找到一个能够匹配最多测量结果的公式。
3 分析
在上述的问题中,需要用到两个递归函数。第一个递归函数(AddVariable)的功能是应用给定的变量数量和参与计算的变量数量来计算出每一个公式中参加计算的变量(变量允许重复)数组;第二个递归函数(AddOperator)的功能是根据已求得的参加计算的变量数组,填充参与计算的运算符,生成公式。本文以第一个递归函数AddVariable为例,图1为这个函数的程序流程图。
4 结束语
综上所述,递归算法是一种实用性很强的算法。算法是程序的灵魂,没有应用到算法的程序实践应用意义不大。而应用到算法的程序也不一定就是好的程序,要综合考虑算法的时间复杂度和空间复杂度,在确保能够得出正确的解的基础上使用时间复杂度和空间复杂度相对较低的算法。算法的研究是没有界限的,在目前已有的算法的基础上研究出更有效率的算法对计算机软件开发的意义重大。因此,致力于软件项目开发的人员要对算法给予更多的重视,力求事半功倍。
参考文献
[1]张引兵,刘林娜.浅谈程序设计中的递归算法[J].淮北煤炭师范学院学报,2008(1).
[2]谭浩强.C程序设计[M].北京:清华大学出版社,2005.
[3]严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,2002.