目录
什么是递归
自己调用自己就叫做递归,比如有一个 method 函数,这个函数在内部不断的自己调用自己,这就叫递归
递归的好处与坏处
递归的好处就是说,我们可以把大量的重复的代码,使用递归的方式来进行,比如求阶乘,如果是以往,我们需要调一下函数,求这个数与下一个数的的乘积,然后再继续掉,但是用递归,我们只用一遍就行;
当然,递归也有坏处,递归如果结束条件不合理,或没有结束条件,就会造成无限自身调用,会频繁创建实例,非常非常耗费资源,很容易造成溢出
递归的难点
1、思想化,该如何递归?怎么实现?
2、结束条件,我该在什么时候结束?
使用递归的硬性条件
1、存在限定条件,即什么时候,递归结束,不再自己调用自己
2、每次递归,都会距离设置的递归结束条件更进一步
递归容易出现的异常
递归上面也说了坏处,递归最容易出现的,就是栈溢出,为什么会栈溢出呢?
内存分为堆内存、占内存、静态存储区
堆内存存放:动态开辟的内存
栈内存存放:函数的形参,局部变量
静态区存放:全局变量,静态参数
当你执行一次函数,程序就向内存申请一次空间,你无限调用,就在栈内存无限创建,直到溢出