计算机领域的递归
递归和分治
计算机领域中的递归是一种解决问题的方法,这种解法依赖于其要解决的问题实例更少的情况下的解法。
递归是计算机科学的中心思想之一。
前面我们讲过一种算法策略:分治。分治策略通常用数学归纳法来验证,其计算多数通过求解递归关系式来判定。
因此,在算法实现层面,很多分治策略的算法,是采用递归的方式实现的。
分治策略、算法和递归的关系如下:
分治策略是一种算法策略——很多种算法指导思想的统称;
某一种分治算法是一种采用了分治策略的算法;
而递归方法是某些分治算法的一种常用实现方式。
递归函数
在计算机编程中,最能够直接体现递归这一概念的,就是递归函数。
什么是递归函数呢?简单说,就是那种:自己调用自己的函数!
我们知道任何编程语言编写的函数都有定义和调用两个部分:
定义包含函数的全部四要素:函数名、参数、返回值和函数体。
其中函数体就是函数的流程逻辑,描述了函数将输入数据处理为输出数据的过程。
函数调用则是对函数的使用。
这些我们前面反复讲过了。
所谓“自己调用自己”,就是在某函数的函数体中,有一个步骤是对它自身的调用——是不是很像贪吃蛇的自己吃自己?
最简单的递归函数
让我们一起来写一个最简单的自己调用自己的递归函数。
无论怎么简单,函数名都不能少,我们这个最简递归函数