文章目录
- 一、概念
- 1、什么是递归?
- 2、递归的原理及作用
- 3、递归的分类
- 4、在使用递归时的注意事项
- 二、递归的练习及扩展
- 1、练习:使用递归计算1-100的累加和
- 2、练习:使用递归计算10的阶乘
一、概念
1、什么是递归?
- 所谓递归就是自己调用自己。
2、递归的原理及作用
- 递归的原理:
- 通过直接或者间接的形式去调用方法本身
- 递归的作用:
- 重复的调用方法本身,用来实现某些功能或者计算出某些数值,通常用在算法上面。
3、递归的分类
- 递归分为两种:
- 直接递归:方法自身调用自己。
- 间接递归:A方法调用B方法,B方法调用C方法,C方法再调用A方法。
4、在使用递归时的注意事项
- 递归一定要有条件限定,保证递归能够停止下来,否则会形成死循环并发生栈内存溢出(StackOverflowError)。
- 递归中虽然限定了停止下来的条件,但是递归次数不能太多,否则也会发生栈内存溢出。
- 禁止构造方法递归。
二、递归的练习及扩展
1、练习:使用递归计算1-100的累加和
/**
* 递归练习:使用递归计算1-100的累加和
*
* @author zhuhuix
* @date 2020-05-31
*/
public class AddRecursion {
public static void main(String[] args) {
System.out.println(sum(100));
}
public static int sum(int n) {
if (n == 1) {
return 1;
} else {
return n + sum(n - 1);
}
}
}
运行结果:
使用递归方法计算的原理图:
2、练习:使用递归计算10的阶乘
/**
* 递归练习:使用递归计算10!阶乘(1*2*3*4*...*10)的值
*
* @author zhuhuix
* @date 2020-05-31
*/
public class FactorialRecursion {
public static void main(String[] args) {
System.out.println(Factorial(10));
}
public static int Factorial(int n){
if (n==1){
return 1;
}else{
return n*Factorial(n-1);
}
}
}
运行结果:
阶乘扩展,是不是多少有点后悔当初没好好学数学emmmm