中国期刊网www.qikanchina.net
递归和迭代对程序的影响
田俊
关键词递归算法迭代算法程序
0引言
在算法分析与设计中递归与迭代是我们解决循环问题常用的两种方法。那么在既可以用递归算法又可以用迭代算法解决的问题中我们究竟该选用哪种算法呢在程序设计中我们不但讲求代码所能实现的功能而且在实现相同功能的同时更注重优化代码、提高代码的执行效率。这也是我们在选择递归还是迭代思想时考虑的主要因素。
1递归和迭代概述
如果一个问题刚开始难以解决可以将其简化后再尝试解决。如果这个过程可以重复进行 问题最终会变得容易处理。 由此引出两种不同的方法递归和迭代。循环或迭代是一种重复执行一个过程的方法递归是另一种方法。递归函数是通过调用函数自身来完成任务而且在每次调用自身时减少任务量。而迭代是循环的一种形式这种循环不是由用户输入而控制每次迭代步骤都必须将剩余的任务减少也就是说循环的每一步都必须执行一个有限的过程并留下较少的步骤。循环的进度通常用一个在每次迭代时都进行自增或自减的变量的值来衡量直到到达预定的目标为止。用递归算法表示许多问题的求解方法时算法思想非常简洁。但是递归算法不仅时间效率非常差而且由于递归算法是不断的函数调用和函数返回过程 因此其实际的计算机运行时间通常远大于循环方式算法的计算机运行时间甚至在有限的时间内无法求解。这就存在一个把递归算法化为非递归算法的问题。
2需要用迭代消解递归的情况
递归算法特别适合于所研究的问题或所处理的数据本身是递归定义的情况。然而并不意味着这种递归定义保证递归算法是解决该问题的最好方法。事实上主要是因为拿那种不合适的例子来解释递归算法概念从而造成了对程序设计中使用递归的普遍怀疑和否定态度并把递归同低效等同起来。而且在递归算法中往往会因为追求代码短或者在求解问题时一味追求规律性多用了无用的压栈和出栈的操作。 比如用循环消解的尾递归是多了无用的压栈和出栈才使速度受损的斐波那契数列计算的递归改循环迭代所带来的速度大幅提升是因为改掉了重复计算的毛病。假使一个递归过程中本身包含了大量冗余的操作并且这个过程又可以用迭代来达到相同的效果。这时我们就一般用迭代来消解递归。也就是说尾递归算法和单向递归算法可用迭代算法来代替。可以用一个方案来描述人们力图在其中避免使用算法递归的程序这个方案展示了其构成的模型。 式或等价的 式就是这个方案
P≡if Bthen(S;P) (1)
Contabo是一家运营了20多年的欧洲老牌主机商,之前主要是运营德国数据中心,Contabo在今年4月份增设新加坡数据中心,近期同时新增了美国纽约和西雅图数据中心。全球布局基本完成,目前可选的数据中心包括:德国本土、美国东部(纽约)、美国西部(西雅图)、美国中部(圣路易斯)和亚洲的新加坡数据中心。Contabo的之前国外主机测评网站有多次介绍,他们家的特点就是性价比高,而且这个高不是一般的高,是...
六一云 成立于2018年,归属于西安六一网络科技有限公司,是一家国内正规持有IDC ISP CDN IRCS电信经营许可证书的老牌商家。大陆持证公司受大陆各部门监管不好用支持退款退现,再也不怕被割韭菜了!主要业务有:国内高防云,美国高防云,美国cera大带宽,香港CTG,香港沙田CN2,海外站群服务,物理机,宿母鸡等,另外也诚招代理欢迎咨询。官网www.61cloud.net最新直销劲爆...
全球独立服务器、站群多IP服务器、VPS(哪个国家都有),香港、美国、日本、韩国、新加坡、越南、泰国、加拿大、英国、德国、法国等等99元起步,湘南科技郴州市湘南科技有限公司官方网址:www.xiangnankeji.cn产品内容:全球独立服务器、站群多IP服务器、VPS(哪个国家都有),香港、美国、日本、韩国、新加坡、越南、泰国、加拿大、英国、德国、法国等等99元起步,湘南科技VPS价格表:独立服...