我们探索一个方法可以做的最神奇的事情之一:调用自身来解决同一问题的较小版本。调用自身的方法称为递归方法。

递归Void方法

考虑以下示例:

public static void countdown(int n) {

if (n == 0) {

System.out.println("Blastoff!");

} else {

System.out.println(n);

countdown(n - 1);

}

}

方法的名称是countdown;它接受单个整数作为参数。如果参数为0,则显示单词blatoff!。否则,它将显示数字,然后调用自己,并将n-1作为参数传递。

如果我们从main调用倒计时(3),会发生什么?

倒计时的执行从n==3开始,由于n不是0,它显示值3,然后调用自己。。。

倒计时的执行从n==2开始,由于n不是0,它显示值2,然后调用自己。。。

倒计时的执行从n==1开始,由于n不是0,它显示值1,然后调用自己。。。

倒计时的执行从n==0开始,由于n是0,它显示单词Blastoff!然后回来。

得到n==1的倒计时返回。

得到n==2的倒计时返回。

得到n==3的倒计时返回。

然后你又回来了。总输出结果如下:

3

2

1

Blastoff!

第二个例子

public static void newLine() {

System.out.println();

}

public static void threeLine() {

newLine();

newLine();

newLine();

}

虽然这些方法有效,但是如果我们想显示两个换行符,或者可能是100个换行符,它们也没有帮助。更普遍的选择是:

public static void nLines(int n) {

递归向下java_Java递归方法Recursive详解相关推荐

  1. rm命令linux00,linux下rm命令使用详解 | Soo Smart!

    linux下rm命令使用详解---linux删除文件或目录命令 用户可以用rm命令删除不需要的文件.该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除 ...

  2. 数据不平衡(class_weight、评估方法、上采样、下采样)、详解及实战

    数据不平衡(class_weight.评估方法.上采样.下采样).详解及实战 核心学习函数方法: np.random.choice() np.where() np.concatenate() np.v ...

  3. linux下sort命令使用详解---linux将文本文件内容加以排序命令

    转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...

  4. Django--filter()-字段查找(双下划线的使用详解)

    Django--filter()-字段查找(双下划线的使用详解) 在了解django中的字段查找的同时,让我们先熟悉一下比较符: 大于--gt-(greater than) 小于--lt-(less ...

  5. Linux下的awk用法详解

    Linux下的awk用法详解 一.awk介绍 二.awk的语法 三.awk常见用法 四.awk其他用法 五.awk语言特性 一.awk介绍 1.AWK 是一种处理文本文件的语言,是一个强大的文本分析工 ...

  6. mysql-win安装教程,WINDOWS下安装MYSQL教程详解

    1.下载安装包 2.配置环境变量 2.1 解压所下载的压缩包 2.2 环境变量 win 10 电脑 这么进去 3.生成data文件 在你解压的目录下,eg:F:\Program Files\mysql ...

  7. java 委托机制_通过反射实现Java下的委托机制代码详解

    简述 一直对Java没有现成的委托机制耿耿于怀,所幸最近有点时间,用反射写了一个简单的委托模块,以供参考. 模块API public Class Delegater()//空参构造,该类管理委托实例并 ...

  8. java委托机制教程_通过反射实现Java下的委托机制代码详解

    简述 一直对java没有现成的委托机制耿耿于怀,所幸最近有点时间,用反射写了一个简单的委托模块,以供参考. 模块api public class delegater()//空参构造,该类管理委托实例并 ...

  9. python单例模式解析_Python下简易的单例模式详解

    Python 下的单例模式 要点: 1.某个类只能有一个实例: 2.它必须自行创建这个实例: 3.它必须自行向整个系统提供这个实例 方法:重写new函数 应该考虑的情况: 1.这个单例的类可能继承了别 ...

最新文章

  1. 直播回顾 | 关于Apollo 5.0控制在环仿真技术的分享
  2. 当老板说要把公司当家时,他在说...
  3. Linux集群部署和ipvsadm命令的使用
  4. acdream 1157Segments cdq分治
  5. 听说你想去大厂看学姐,带你看看拼多多运营面经
  6. Divan and Kostomuksha (H version) dp,gcd(2300)
  7. luogu P1007 独木桥
  8. 牛客网 栈的压入、弹出序列
  9. 如何利用计算机实现非线性转换,基于cass数控绕线机非线性算法的设计与实现-计算机应用技术专业论文.docx...
  10. Splunk企业级运维智能大数据分析平台新手入门视频课程上线
  11. Windows环境下Android NDK环境搭建
  12. 《CoderXiaoban》第九次团队作业:Beta冲刺与验收准备1
  13. 两计算机之间怎样快速传输数据,两个局域网之间怎么互相传输文件有什么快速方法...
  14. linux grub 分辨率,修改grub分辨率
  15. 基于ROS的仿人机器人运动规划与实现
  16. 计算机毕业设计JAVA便利店系统mybatis+源码+调试部署+系统+数据库+lw
  17. opencv用shi-Tomasi角点检测实现目标追踪
  18. 【论文翻译笔记】Seamlessly Unifying Attributes and Items: Conversational Recommendation for Cold-Start User
  19. csv文件用excel打开不分列
  20. Wordpress模板主题中functions.php常用功能代码与常用插件[ 后台篇](持续收集整理)

热门文章

  1. Mac 与 Windows 通过网线“直连”共享数据
  2. 移动网优大神VoLTE学习笔记(二)
  3. pyinstall install
  4. 基础知识(一),ip地址详解、网关、DNS、进制转换、DOS命令、批处理、用户和组管理、telnet、RDP、NTFS、CIFS
  5. 欢乐Flash夏令营
  6. MonoDevelop的app.config问题
  7. 全网最全解决这idea乱码问题
  8. 集群聊天服务器项目(四)——项目总结
  9. C++搭建集群聊天室(四):工程统帅神器 Cmake,我爱死它了
  10. ZZULIOJ1061-1070