数据结构与算法学习笔记(JAVA)——第六章 递归

85 阅读1分钟

一、介绍(Recursion)

1. 基本概念

简单的来说,递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时让代码变得简洁

2. 调用机制

通过一个案例来说明递归的调用机制

递归1.PNG

3. 解决的问题

  • 各种数学问题:8皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子的问题
  • 各种算法中也会用到递归,比如快排,二分查找,分治算法等
  • 需要用栈解决的问题

4. 遵守的规则

  • 执行一个方法时,就创建一个新的受保护的独立空间(栈空间)
  • 方法的局部变量是独立的,不会相互影响,比如n变量;如果方法使用的是引用类型变量(比如数组),就会共享该引用类型的数据。
  • 递归必须向退出递归的条件逼近,否则就会是无限递归,造成栈溢出
  • 当一个方法执行完毕后,就会返回(如果有返回值,就像执行结果返回给调用方)

三、递归的应用