一、什么叫 递归
解答:递归就是指在当前的方法内调用自己的现象
二、递归的分类
1.递归分为两种,一种是直接递归一种是间接递归
2.直接递归就是方法自身调用自己
3.间接递归,比如A方法调用B方法,B方法调用C方法,而C方法调用Af方法
三、注意点
1.递归一定要有条件限制,在条件下可以停止下来,否者会发生栈内存的溢出。
2.在递归中虽然有条件的限制,但递归的次数是不能太多,否则也会发生栈内存的溢出的问题
3.构造方法必须静止递归
实例
package com.recursion;
public class recursion {
/*
* 2.在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
* 否则出现 Exception in thread "main" java.lang.StackOverflowError
* jdk1.8栈中只能装10455 否则溢出
* */
public void show( int i){
System.out.println(i);
if (i == 10455){
return;
}
show(++i);
}
/*
1.递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出
* Exception in thread "main" java.lang.StackOverflowError*/
public void show1(){
System.out.println("不加条件的溢出");
show1();
}
}
测试类
package com.recursion;
public class Textrecursion {
public static void main(String[] args) {
recursion r = new recursion();
r.show(1);
r.show1();
}
}
四、递归累加求和
1.计算1到n
分析:sum(和)=sum+(sum-l)
package com.recursion;
public class RecursionSum {
public int getsum(int num){
if (num == 1){
return 1;
}
System.out.println("打印");
return num + getsum(num -1);
}
}
测试
package com.recursion;
public class TextRecurtionSum {
public static void main(String[] args) {
RecursionSum rSum = new RecursionSum();
int num = 3;
int sum = rSum.getsum(num);
System.out.println(sum);
}
}