1、递归:自己调用自己
递归结构包括两个部分:
---递归头:什么时候不调用自身方法。如果没有头,会陷入死循环(即限制条件)
---递归体:什么时候调用自身方法。
递归的深度越大,占用的空间内存就会大,实用性也就不会那么好。大计算能少用递归就少用
尝试用下面的代码,会导致stackoverflowerror (栈溢出)
package methodd;
public class Demo02 {
public static void main(String[] args) {
Demo02 test = new Demo02();
test.test();
}
public void test(){
test();
}
}
报错如下:
2、用递归实现阶乘
package methodd;
//阶乘
//比如2! 2的阶乘,即2*1 1! 1的阶乘就是1本身
//3! 3的阶乘 3*2*1
//5! 5的阶乘 5*4*3*2*1
public class Demo03 {
public static void main(String[] args) {
System.out.println(f(5));
}
// 2! 2*f(1)
// 3! 3*f(2) 3*2*f(1)
public static int f(int n){
if(n==1){
return 1;
}else{
return n*f(n-1);
}
}
}