什么是递归
定义:定义方法时,在方法内部调用方法本身,称为递归;
public void show(){
System.out.println("递归函数");
show(); //调用自身
}
作用
通常把一个大型复杂问题层层转化位一个与原问题相似规模小的问题来求解
举例
求n的阶乘
public class Demo {
public static int factoral(Integer a) {
if (a == 1) {
return 1;
} else {
return a * factoral(a - 1); //递归调用函数本身 进而求出阶乘
}
}
public static void main(String[] args) {
System.out.println( Demo.factoral(4));
}
}
注意事项
在递归调用中不能无限的调用自己,必须要有边界条件能使递归结束,因为每一次递归调用都会在栈内存中开辟新的空间,重新执行方法,如果递归太深,非常容易造成栈内存溢出;
public class Demo2 {
public static void s(){
System.out.println("1");
s(); //死循环出不去了 且会造成栈内存溢出
}
public static void main(String[] args) {
Demo2.s();
}
}