勇敢心资源网

当前位置:首页 > 百科 / 正文

递归法

(2020-05-13 06:17:17) 百科
递归法

递归法

递归法是设计和描述算法的一种有力的工具,由于它在複杂算法的描述中被经常採用,为此在进一步介绍其他算法设计方法之前先讨论它。

基本介绍

  • 中文名:递归法
  • 外文名:Recursive method

概述

能採用递归描述的算法通常有这样的特徵:为求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能採用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。特别地,当规模N=1时,能直接得解。

执行过程

递归算法的执行过程分递推和回归两个阶段。在递推阶段,把较複杂的问题(规模为n)的求解推到比原问题简单一些的问题(规模小于n)的求解。例如上例中,求解fib(n),把它推到求解fib(n-1)和fib(n-2)。也就是说,为计算fib(n),必须先计算fib(n-1)和fib(n-2),而计算fib(n-1)和fib(n-2),又必须先计算fib(n-3)和fib(n-4)。依次类推,直至计算fib(1)和fib(0),分别能立即得到结果1和0。在递推阶段,必须要有终止递归的情况。例如在函式fib中,当n为1和0的情况。
在回归阶段,当获得最简单情况的解后,逐级返回,依次得到稍複杂问题的解,例如得到fib(1)和fib(0)后,返回得到fib(2)的结果,……,在得到了fib(n-1)和fib(n-2)的结果后,返回得到fib(n)的结果。
在编写递归函式时要注意,函式中的局部变数和参数只是局限于当前调用层,当递推进入“简单问题”层时,原来层次上的参数和局部变数便被隐蔽起来。在一系列“简单问题”层,它们各有自己的参数和局部变数。

作用

由于递归引起一系列的函式调用,并且可能会有一系列的重複计算,递归算法的执行效率相对较低。当某个递归算法能较方便地转换成递推算法时,通常按递推算法编写程式。例如上例计算斐波那契数列的第n项的函式fib(n)应採用递推算法,即从斐波那契数列的前两项出发,逐次由前两项计算出下一项,直至计算出要求的第n项。
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net
搜索
随机推荐

勇敢心资源网|豫ICP备19027550号