递归的白话解释就是自己调用本身,下面使用一个小案例来解释递归的流程,使用递归实现5的阶乘
5!=5x4x3x2x1
{
public static void main(String[] args) {
System.out.println(f(5));
}
public static int f(int n){
if(n == 1){
return 1;
}else {
return n*f(n-1);
}
}
}
分析一下递归的调用流程
在方法执行开始,判断不为1,则继续调用f(4),f(4)调用f(3),就这样一直到f(1)返回1,然后依次的计算出f(5)的结果。这里是用到了计算机栈的一个概念,一开始是将执行的方法一个一个压入到栈中,待到最后的方法得出了结果后再依次的出栈。
小结:
递归是一种思想,但他并不是一个优秀的算法,递归的次数越多越消耗计算机的内存,直至栈溢出,在遇到需要递归次数较多的时候建议不要使用。