递归
- 表现形式: 函数的自我调用
- 怎么理解:
核心: 模型
- 磊方块
- 树模型
递归的本质是分解子问题 当你把子问题看成一个"点"(状态),的时候,那么递归就是在树的上的行走
1.递归的本质是分解子问题 1.递归是在树上行走
递归的概念
同学们看下面这幅图片:
我们发现如下的特点:照片中的图像就是本身,同时照片中的照片也是本身.
象这样,一个对象部分地由它自己组成,或者是按它自己定义,我们称之为递归。
函数的递归调用
我们已经学习过有关函数的知识了,我们知道一个函数可以被其它函数调用.但是你有没有想过:如果一个函数调用自己本身会发生什么?
一个函数、概念或数学结构,如果在其定义或说明内部又直接或间接地出现有其本身的引用,则称它们是递归的或者是递归定义的。在程序设计中,过程或函数直接或者间接调用自己,就被称为递归调用。
递归的重要概念
递归是借助于一个栈来实现;递归=前进+回溯:
- 递推:问题不停的向一极(问题的深度)推进,这一过程叫做前进;这一过程相当于压栈.
- 回溯:问题逐一解决,最后回到原问题,这一过程叫做回溯。这一过程相当于弹栈。
递归的一般写法
c
int func(int a){
if(a xxx){ //边界条件
return ;
}
//递归方程,具体的操作
a ==xx;
return xx;
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
拓展知识
曼德勃罗特集是人类有史以来做出的最奇异,最瑰丽的几何图形.曾被称为“上帝的指纹”。 这个点集均出自公式:Zn+1=(Zn)^2+C,
如果你仔细观察自然的事物,你会发现:自然界的大部分结构都是越微小越复杂,你越接近的观察,就能揭示越多的细节(无限长度海岸线,雪花的边长无限,面积有限).大部分的自然界的微观结构会近乎一致地符合分形的特征.
分形就是自然界的递归,因为它局部和整体相似.
链接: https://pan.baidu.com/s/1nvp7oBf 密码: thp6