public class Demo { public static void main(String[] args) { System.out.println(fac(5)); } //阶乘 public static int fac(int n){ if(n == 1){ //递归头(结束条件) return 1; }else{ return n*fac(n-1); //递归体 } } }
缺点 :
效率:递归由于是方法自己调用自己,每一次调用方法时,都需要在内存栈中分配空间以保存参数、返回地址以及变量,而往栈中压入数据和弹出数据都需要时间,所以递归耗时更多!
性能:栈可能溢出,每一次方法的调用都会在内存栈中分配内存,而每个进程的栈的容量是有限的,当调用的层次太多时,就会超出栈的容量,从而导致栈溢出!