前言:
当我们碰到诸如需要求阶乘或斐波那契数列的问题时,使用普通的循环往往比较麻烦,但如果我们使用递归时,会简单许多,起到事半功倍的效果。这篇文章主要和大家分享一些和递归有关的经典案例,结合一些资料谈一下个人的理解,也借此加深自己对递归的理解和掌握一些递归基础的用法。
一、递归的简介
1、递归的百度百科定义
2、递归的通俗理解
递归就是在函数内部调用自己的函数被称之为递归。
3、几个关于递归通俗的比喻
我想到一个比较接近我们生活的例子,和那个传本子的例子类似,比如你喜欢一个女孩,你想告诉她,但你和她座位隔得很远,你写好了纸条,想同学传过去,于是,你把纸条传给你前面的同学,然后同学又向前传,直到传到你喜欢的那个女孩手里,但是女孩已经有喜欢的人了,于是,她也写了一个纸条让原来的同学再传回来给你,那么同学之间打招呼传纸条的行为就可以看作是函数调用,你是最初调用的函数,那个你喜欢的女孩就是最终的目的地,纸条上的信息就是初始值和最终答案。
4、最简单的递归的实例
5、递归的特点
通过以上的介绍,我们大致可以总结出递归的以下几个特点:
关于递归还有两个名词,可以概括递归实现的过程
递推:像上边递归实现所拆解,递归每一次都是基于上一次进行下一次的执行,这叫递推
回溯:则是在遇到终止条件,则从最后往回返一级一级的把值返回来,这叫回溯
二、递归经典案例
1、递归求阶乘
实例如下:
2、递归推斐波那契数列
实例如下:
3、二分法找有序列表指定值
实例如下: