递归:方法自己调用自己

递归的分类:

  递归分为两种,直接递归和间接递归

  直接递归称为方法自身调用自己

  间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法

注意事项:

  递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出

  在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出

  构造方法,禁止递归
递归的使用前提:
  当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归

public class Demo01Recurison {
public static void main(String[] args) {
//a();
b(1);
} /*
构造方法,禁止递归
编译报错:构造方法是创建对象使用的,一直递归会导致内存中有无数多个对象,直接编译报错
*/
public Demo01Recurison() {
//Demo01Recurison();
} /*
在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
11157
Exception in thread "main" java.lang.StackOverflowError
*/
private static void b(int i) {
System.out.println(i);
if(i==20000){
return; //结束方法
}
b(++i);
} /*
递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
Exception in thread "main" java.lang.StackOverflowError
*/
private static void a() {
System.out.println("a方法!");
a();
}
}

练习_使用递归计算1-n之间的和

public class Demo02Recursion {
public static void main(String[] args) {
int s = sum(10);
System.out.println(s);
}
/*
定义一个方法,使用递归计算1-n之间的和
1+2+3+...+n
n+(n-1)+(n-2)+...+1
已知:
最大值:n
最小值:1
使用递归必须明确:
1.递归的结束条件
获取到1的时候结束
2.递归的目的
获取下一个被加的数字(n-1)
*/
public static int sum(int n){
//获取到1的时候结束
if (n==1){
return 1;
}
return n+sum(n-1);
}
}

最新文章

  1. CSS3背景温故
  2. mysql高可用之DRBD + HEARTBEAT + MYSQL
  3. Bootstrap页面布局24 - BS旋转木马功能
  4. 用于迭代器的yield return
  5. [NYOJ 15] 括号匹配(二)
  6. WordPress RokStories插件‘thumb.php’多个安全漏洞
  7. hdu 3642 Get The Treasury (三维的扫描线)
  8. 记一个Java错误 1 -- Unsupported major.minor version 52.0
  9. XML预览
  10. 关于bootstrap-fileinput
  11. 基于reflectasm打造自己的通用bean工具
  12. Java EE开发技术课程
  13. 初探kafka
  14. Python2 错误记录1File "<string>", line 1, in <module> NameError: name 'f' is not defined
  15. 代码的二次重构(开篇:JDBC连接数据库)
  16. 洛谷 P1144 最短路计数
  17. Java用freemarker导出word
  18. 解决 vue 的缩进问题 及 vue 的 sass 调用 mixin 函数
  19. MVC,MVP 和 MVVM 的图示 转自阮一峰先生网络日志
  20. docker微服务部署之:四、安装docker、docker中安装mysql和jdk1.8、手动构建镜像、部署项目

热门文章

  1. OA办公软件篇(三)—审批流
  2. Ajax学习笔记demo
  3. mapboxgl 中插值表达式的应用场景
  4. 力扣算法:LC 704-二分查找,LC 27-移除元素--js
  5. AQS源码三视-JUC系列
  6. docker+nginx+redis部署前后端分离项目!!!
  7. 网络协议之:sctp流控制传输协议
  8. 【算法】希尔排序(Shell Sort)(四)
  9. Java高并发-无锁
  10. Lombok - 快速入门