目录
一、What
递归算法是一种直接或间接调用自身函数或者方法的算法。实质是把问题分解成规模小的同类问题的子问题,然后递归调用方法来表示问题的解。
我们可以把” 递归 “比喻成 “查字典 “,当你查一个词,发现这个词的解释中某个词仍然不懂,于是你开始查这第二个词。可惜,第二个词里仍然有不懂的词,于是查第三个词,这样查下去,直到有一个词的解释是你完全能看懂的,那么递归走到了尽头,然后你开始后退,逐个明白之前查过的每一个词,最终,你明白了最开始那个词的意思。(摘自知乎的一个回答)
2个重要条件:
1.调用自身:有反复执行的过程
2.递归出口:有跳出反复执行过程的条件
举例:
数学上计算阶乘的定义如下:
public Integer fact(Integer n){
if(n == 0){
return 1;
}else {
return n*fact(n-1);
}
}
@Test
public void digui(){
Integer sum = this.fact(5);
System.out.println(sum); // 运行结果为:120
}