一、介绍(Recursion)
1. 基本概念
简单的来说,递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时让代码变得简洁
2. 调用机制
通过一个案例来说明递归的调用机制
3. 解决的问题
- 各种数学问题:8皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子的问题
- 各种算法中也会用到递归,比如快排,二分查找,分治算法等
- 需要用栈解决的问题
4. 遵守的规则
- 执行一个方法时,就创建一个新的受保护的独立空间(栈空间)
- 方法的局部变量是独立的,不会相互影响,比如n变量;如果方法使用的是引用类型变量(比如数组),就会共享该引用类型的数据。
- 递归必须向退出递归的条件逼近,否则就会是无限递归,造成栈溢出
- 当一个方法执行完毕后,就会返回(如果有返回值,就像执行结果返回给调用方)