1、递归介绍

1.1、递归应用场景

  • 看个实际应用场景, 迷宫问题(回溯), 递归(Recursion)

1.2、递归的概念

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

1.3、递归调用机制

  • 打印问题

  • 阶乘问题
// 阶乘问题
public static int factorial(int n) {if (n == 1) {return 1;} else {return factorial(n - 1) * n;}
}

1.4、递归能解决什么问题

  • 各种数学问题如: 8 皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子的问题(google 编程大赛)
  • 各种算法中也会使用到递归, 比如快排, 归并排序, 二分查找, 分治算法等.
  • 将用栈解决的问题 --> 递归代码比较简洁

1.5、递归需遵循的规则