什么叫递归?举个例子,我们排队,想知道自己排在第几个,那么我们可以问前面的那个人,前面的人继续问前面,直到问到第一个人,这就是传递的过程。然后再从第一个人回来,这就是归(回溯)的过程。传递过去再回归回来,这就是递归。第一个人就是我们所说的递归出口,也就是说到哪个点应该回归了,如果没有出口,那么就会死循环了栈溢出。
在代码中简单来说就是自己调用自己。拿到自己的结果再作为入参调用自己。
比如我们求阶乘:
5的阶乘: 5*4*3*2*1
我们用递归来写,那么出口就是n=1的时候:代码如下
/** * 阶乘 * @param n * @return */ public static int factorial(int n) { if (n <= 1) { return 1; } return n * factorial(n - 1); }