什么是递归

概念:
  1. 递归指的是方法定义中调用方法本身的现象(自己调自己)
  2. 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
  3. 递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算
递归注意事项:
  1. 递归一定要有出口。否则内存溢出(出口:什么时候不再调用自己)
  2. 递归虽然有出口,但是递归的次数也不宜过多。否则内存溢出
public static void main(String[] args) {
System.out.println("main");
main(args);
}
递归求和:

计算1 ~ 5的和

    public static void main(String[] args) {int sum = getSum(100);System.out.println(sum);}private static int getSum(int i) {if (i == 1) {return 1;} else {return i + getSum(i - 1);}}
递归求阶乘:

讲解:

  • 找规律: n的阶乘 = n 乘以 (n-1)的阶乘
  • 找出口: 当n==1时,返回1
    public static void main(String[] args) {//调用方法int result = jc(5);//输出结果System.out.println("5的阶乘是:" + result);}public static int jc(int n) {//在方法内部判断该变量的值是否是1if (n == 1) {//是:返回1return 1;} else {//不是:返回n*(n-1)!return n * jc(n - 1);}}
文件搜索:

搜索 D:\aaa 目录中的 .java 文件。

//1. 目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录。
//2. 遍历目录时,获取的子文件,通过文件名称,判断是否符合条件。public static void main(String[] args) {
// 创建File对象File dir = new File("D:\\aaa");
// 调用打印目录方法printDir(dir);}public static void printDir(File dir) {
// 获取子文件和目录File[] files = dir.listFiles();
// 循环打印for (File file : files) {if (file.isFile()) {
// 是文件,判断文件名并输出文件绝对路径if (file.getName().endsWith(".java")) {System.out.println("文件名:" + file.getAbsolutePath());}} else {
// 是目录,继续遍历,形成递归printDir(file);}}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

错误问题

1、系统出现如下错误:warning: LF will be replaced by CRLF 原因分析: CRLF -- Carriage-Return Line-Feed 回车换行 就是回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)。 这两个ACSII字符不会在屏幕有任何输出,但在Windows中广泛使用来标…

oracle监听为blocked,关于“Instance +ASM1, status BLOCKED, ”

确实是可以的~只是需要配置一下~不过这个如果不操作ASM instacne的话没什么用Applies to:Oracle Net Services - Version: 10.1.0.4.0 to 10.2.0.4.0Information in this document applies to any platform.SymptomsChecking the listener status, ASM instance is shown as BL…

彻底学会IO流

概述: IO流就是用来处理设备间数据传输问题的.常见的应用: 文件复制; 文件上传; 文件下载IO的数据传输,可以看做是一种数据的流动,按照流动的方向,已内存为参照物,进行读写操作IO可以保存到文件,其实就是内…

一些芯片资料

74hc14d u10 u11 u12 六反相触发器 74HC244 三态八缓冲器 u15 u13 uln2003afwg u16 74HC07 u17 L298N 步进电机驱动芯片 MOS管认知 转载于:https://www.cnblogs.com/legion/p/6908434.html

debian php安装pdo扩展,docker安装PHP扩展2020-05-25

示例:1、docker-php-ext-install pdo_mysql2、extensionphp_pdo_mysql.dll一、docker按照PHP扩展先删除原来的composer容器,重新执行以下命令:docker run -it --name composer -v E:\docker\nginx\www\YYXTServer:/app --privilegedtrue comp…

DP Intro - Tree DP Examples

因为上次比赛sb地把一道树形dp当费用流做了,受了点刺激,用一天时间稍微搞一下树形DP,今后再好好搞一下) 基于背包原理的树形DP poj 1947 Rebuilding Roads 题意:给你一棵树,让你求最少剪掉多少条边可以剪出一棵点数为m…

强大的缓冲流

概述: 缓冲流的概述BufferedInputStream: 字节输入缓冲流BufferedOutputStream: 字节输出缓冲流四种方式复制字符缓冲流文本排序字符流读字符乱码问题InputStreamReader转换流读取字符数据OutputStreamWriter转换流写字符数据转换文件编码 1.缓冲流的概述&#xf…

linux驱动头文件查找目录,在Fedora 20中查找简单设备驱动程序的头文件

因此,我尝试按照简单的示例加载ORielly Linux设备驱动程序手册中的“ Hello World”设备驱动程序。问题是,由于某种原因,除非我在include语句中显式定义头文件的路径,否则它将无法正常工作。即我必须输入#include 而不只是#includ…

Feel Good

传送门 Time Limit: 3000MS Memory Limit: 65536KTotal Submissions: 14435 Accepted: 3996Case Time Limit: 1000MS Special JudgeDescription Bill is developing a new mathematical theory for human emotions. His recent investigations are dedicated to studying how g…

转换流/序列化/反序列化

转换流: 使用转换流可以在一定程度上避免乱码,还可以指定输入输出所使用的字符集 InputStreamReader:是从字节流到字符流的桥梁,父类是Reader OutputStreamWriter:是从字符流到字节流的桥梁,父类是Writer 转…

linux进程map,LInux环境运行mapReduce程序

将工程整体打成一个jar包并上传到linux机器上,准备好要处理的数据文件放到hdfs的指定目录中用命令启动jar包中的Jobsubmitter,让它去提交jar包给yarn来运行其中的mapreduce程序 :hadoop jar wc.jar cn.edu360.mr.wordcount.JobSubmitter ...…

python+unittest框架整理(一点点学习前辈们的封装思路,一点点成长。。。)

预期框架整理目标: 1.单个用例维护在单个.py文件中可单个执行,也可批量生成组件批量执行 2.对定位参数,定位方法,业务功能脚本,用例脚本,用例批量执行脚本,常用常量进行分层独立,各自…

linux 不知道root密码怎么办,linux下忘记root密码怎么办

在linux系统操作中,为了系统的安全,会给系统中的root账户设置密码,那么忘记密码是时常发生的事情。如果忘记了root的密码该怎么办呢?下面秋天网 Qiutian.ZqNF.Com小编就给大家介绍下linux下忘记root密码的解决方法。linux是一套免费使用和自…

scrapy爬个小网站

本文使用scrapy对某一个网站静态数据进行了抓取# -*- coding: utf-8 -*- import scrapy from scrapy.http import request import requests import os import sys reload(sys) sys.setdefaultencoding(utf-8)#中文字符不能被识别报错 class spider(scrapy.Spider):namepicSpi…

linux如何标识用户账号和组账号,linux管理用户和组

唯一标识: UID GID (管理员root的UID为0)组的分类: 基本组 附加组(从属组)基本组:Linux自己创建的组,与用户同名,系统自动将用户加入附加组(从属组):管理员自建创建,管理员将用户加入Linux一个…

Windows 相关链接

c运行库、c标准库、windows API的区别和联系 http://www.cnblogs.com/renyuan/p/5031100.html 转载于:https://www.cnblogs.com/jidongdeatao/p/6916260.html

vs远程编译linux程序,使用Visual Studio 2015远程调试Linux程序

##安装 Visual Studio 2015安装时注意将跨平台移动开发->Visual C移动开发->Viaual C Android 开发的选项勾上##安装PUTTYVisual Studio依赖putty中的plink来连接Linux机器并发送命令##使用首先在Visual Studio中新建一个空项目这里是列表文本接下来将代码导入到这个空项…

都在说反射,反射到底是什么

概念: 什么是反射? 利用反射可以无视修饰符获取类里面所有的属性和方法对于任何对象,都能够调用它的方法和属性,这种动态获取信息以及动态调用对象方法的功能称为Java的反射 反射的应用场景? 常见的有: idea的智能提示、框架等…

jade linux 安装教程,ROS-Jade版在UbuntuKylin15.04上的安装

ROS已经升级到Jade版了,而且貌似可以支持Ubuntu15.04。这里做一个测试,安装是成功的,运行有没有问题,慢慢用了再说。Ubuntu install of ROS JadeWe are building Debian packages for several Ubuntu platforms, listed below. …

LaunchScreen原理

会自动加载LaunchScreen是因为在Target当中,指定了Launch Screen file 它的底层实现其实把LaunchScreen上的东西,生成了一张图片,然后把这张图片设为程序的启动图片.可以进入沙盒当中查看,查看方法,找到应用程序根目录.获取方法: NSLog("%",NSHomeDirectory());打印出…