当前位置:首页算法 > 正文

递归算法思想

作者:野牛程序员:2023-05-08 23:23:51算法阅读 2497

递归算法也是一种很常用的算法思想,使用该算法有时可有效地解决一些问题,往往可以简化代码的编写,提高程序的可读性。但若有不合适的递归,反而会导致程序的执行效率 变低。

所谓递归算法,就是在程序中不断反复调用自身来求解问题的方法。这里强调的重点是调用自身,就得要等待求解的问题能够分解为相同问题的一个子问题;这样通过多次递归调 用,便可完成求解。 

递归算法的具体实现过程一般通过函数(或子过程)来完成,在函数(或子过程)的内部,编写代码直接或者间接地调用函数(或子过程)自己,即可完成递归操作。这种函数也 称为“递归函数”。

在递归函数中,主调函数同时又是被调函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。 


编程经验 把求解问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或子过程)来表示问题的解,通过多次递归调用,最终可求出最小问题的解,然后通过这个 最小问题的解返回上层调用,再求出次小问题的解,再返回上层调用,不断重复,最终得到整个问题的解,完成递归操作。

 从递归算法的实质可以看出,递归算法也是一种循环,只是这种循环不是使用程序设计语言的循环语句来实现,而是循环调用函数(或子过程)自身来实现的。要实现这种递归循 环,一般有三个要求:

1、每循环调用一次,求解问题的规模都要有所缩小,即将求解的问题化为一个缩小了的子问题; 

2、相邻两次循环之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入); 

3、当子问题的规模极小时,应该能直接给出解答而不再进行递归调用(即必须有一个结束递归的条件),因而每次递归调用都是有条件的,无条件递归调用将会使程序进入死循环 而不能正常结束(最终导致堆栈溢出)。

由以上递归算法的要求可以看出,在使用递归算法解决问题时,需要注意以下几点:

1、在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 

2、递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。

3、在递归调用的过程中,系统将每一次递归调用的返回点、局部量等保存在系统的栈中,当递归调用的次数太多时,就可能造成栈溢出错误。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击