java从入门到起飞(八)——循环和递归

文章目录

  • Java循环
    • 1. 什么是循环?
      • 1.1 为什么需要循环?
      • 1.2 循环的分类
    • 2. Java中的循环结构
      • 2.1 for循环
      • 2.2 while循环
      • 2.3 do-while循环
    • 3. 循环控制语句
      • 3.1 break语句
      • 3.2 continue语句
    • 4. 总结
  • Java递归
    • 1. 什么是递归
    • 2. 递归的原理
    • 3. 递归的实现
    • 4. 递归的应用
    • 5. 总结

Java循环

1. 什么是循环?

循环是一种重复执行特定代码块的结构。在编程中,我们经常需要重复执行某些任务,这时循环就派上了用场。

1.1 为什么需要循环?

循环使得程序可以自动化地执行重复的任务,而不需要手动重复编写相同的代码。它能够提高代码的可读性、简化程序的逻辑,并且方便对大量数据进行处理。

1.2 循环的分类

常见的循环类型包括:

  • 前测试循环:在执行循环体之前对循环条件进行判断,例如C语言中的for循环。
  • 后测试循环:在执行循环体之后对循环条件进行判断,例如Java中的while循环和do-while循环。
  • 无限循环:条件始终为真,例如在服务器程序中等待客户端连接的情况。

2. Java中的循环结构

在Java中,有三种主要的循环结构:for循环、while循环和do-while循环。它们分别适用于不同的应用场景。

2.1 for循环

for循环是一种前测试循环结构,它通常用于已知循环次数的情况。for循环由三部分组成:初始化、循环条件和循环迭代。

for (初始化; 循环条件; 循环迭代) {// 执行的代码块
}

例如,我们可以通过for循环输出数字1到10:

for (int i = 1; i <= 10; i++) {System.out.println(i);
}

2.2 while循环

while循环是一种前测试循环结构,它适用于未知循环次数但满足条件的情况。在执行循环体之前,先判断循环条件是否为真,如果为真则执行循环体。

while (循环条件) {// 执行的代码块
}

例如,我们可以通过while循环输出数字1到10:

int i = 1;
while (i <= 10) {System.out.println(i);i++;
}

2.3 do-while循环

do-while循环是一种后测试循环结构,它在执行循环体之后才判断循环条件。即使循环条件不满足,至少会执行一次循环体。

do {// 执行的代码块
} while (循环条件);

例如,我们可以通过do-while循环输出数字1到10:

int i = 1;
do {System.out.println(i);i++;
} while (i <= 10);

3. 循环控制语句

在循环中,还有一些特殊的语句用于控制循环的执行流程。

3.1 break语句

break语句用于提前结束循环,即使循环条件尚未满足。它可以用于任何循环结构(for循环、while循环和do-while循环)。

for (int i = 1; i <= 10; i++) {if (i == 5) {break;}System.out.println(i);
}

上面的示例中,当i等于5时,break语句会立即终止循环。

3.2 continue语句

continue语句用于跳过当前循环的剩余代码,继续下一次循环的执行。它也可以用于任何循环结构。

for (int i = 1; i <= 10; i++) {if (i % 2 == 0) {continue;}System.out.println(i);
}

上面的示例中,当i是偶数时,continue语句会跳过输出语句,直接进行下一次循环。

4. 总结

Java提供了for循环、while循环和do-while循环这三种主要的循环结构,用于重复执行特定的代码块。通过合理使用循环结构和循环控制语句,可以轻松处理重复性任务和大量数据的处理。

在使用循环时,需要注意循环条件的设置和循环体内的代码逻辑,以避免出现无限循环或错误的运算结果。同时,要根据具体的需求选择合适的循环结构,提高代码的可读性和可维护性。

希望本文对你理解和应用Java循环提供了一些帮助。​

Java递归

1. 什么是递归

递归是一种在函数内部调用自身的编程技巧。在Java中,递归是一种常见的算法和编程方法,用于解决需要重复执行相同操作的问题。

2. 递归的原理

递归的原理可以简单描述为以下几个步骤:

  1. 定义基本情况:确定递归终止的条件,即递归函数不再调用自身的情况。
  2. 定义递归规则:将问题划分为更小的子问题,并通过调用自身来解决子问题。
  3. 调用递归函数:在函数内部调用自身,将问题规模不断缩小,直到达到基本情况。
  4. 返回结果:将子问题的结果合并,得到最终的解。

3. 递归的实现

在Java中,实现递归通常需要定义一个递归函数。递归函数需要满足以下几个条件:

  • 基本情况:递归函数必须有一个或多个基本情况,当满足基本情况时,递归函数不再调用自身,直接返回结果。
  • 递归调用:递归函数内部需要调用自身,将问题划分为更小的子问题。
  • 问题规模减小:每次递归调用时,问题规模都应该比上一次调用时小,以确保递归能够终止。
    下面是一个简单的例子,用于计算一个正整数的阶乘:
public class RecursionExample {public static int factorial(int n) {// 基本情况:n为0或1时,直接返回1if (n == 0 || n == 1) {return 1;}// 递归调用:将问题规模缩小,计算n-1的阶乘return n * factorial(n - 1);}public static void main(String[] args) {int result = factorial(5);System.out.println("5的阶乘为:" + result);}
}

4. 递归的应用

递归在实际开发中有许多应用场景,例如:

  • 文件和目录的遍历:通过递归遍历文件夹和子文件夹,实现文件的查找、复制等操作。
  • 树的遍历:通过递归遍历二叉树或多叉树,实现查找、插入、删除等操作。
  • 数组和列表的操作:通过递归实现数组和列表的排序、搜索、合并等操作。

需要注意的是,递归可能会导致性能问题和堆栈溢出的风险。在使用递归时,需要合理设计递归终止条件,避免出现无限递归的情况。

5. 总结

递归是一种在函数内部调用自身的编程技巧,用于解决需要重复执行相同操作的问题。在Java中,递归通常通过定义递归函数来实现。递归函数需要满足基本情况、递归调用和问题规模减小的条件。递归在实际开发中有广泛的应用场景,但需要注意性能和堆栈溢出的问题。通过合理设计递归终止条件和优化递归算法,可以充分发挥递归的优势,解决复杂的问题。
在这里插入图片描述

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

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

相关文章

聚观早报|华为Mate 60 Pro支持面容支付;特斯拉重回底特律车展

【聚观365】9月8日消息 华为Mate 60 Pro已支持面容支付 特斯拉将重回底特律车展 iPhone在美国有1.67亿用户 韩国半导体8月份出口85.6亿美元 比亚迪元PLUS冠军版将于9月15日上市 华为Mate 60 Pro已支持面容支付 毫无预热的华为Mate 60 Pro突然在华为商城首批开售&#xf…

旅游攻略APP外包开发功能

旅游攻略APP是帮助旅行者计划和享受旅行的工具&#xff0c;下面列出了一些常见的旅游攻略APP功能&#xff0c;以及在上线这类应用时需要注意的问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 常见…

使用内网负载机(Linux)执行Jmeter性能测试

一、背景 ​ 在我们工作中有时候会需要使用客户提供的内网负载机进行性能测试&#xff0c;一般在什么情况下我们需要要求客户提供内网负载机进行性能测试呢&#xff1f; 遇到公网环境下性能测试达到了带宽瓶颈。那么这时&#xff0c;我们就需要考虑在内网环境负载机下来执行我们…

球谐函数实现环境光照漫反射实践

该文章以及代码主要来自 图形学论文解析与复现&#xff1a;【论文复现】An Efficient Representation for Irradiance Environment Maps 作者&#xff1a;Monica的小甜甜 与原文的不同&#xff1a; 对一些有问题的地方进行了修改添加了注释对有疑问的地方添加了疑问点引入了其…

飞书即时消息无需API开发连接Cohere,打造飞书AI智能问答助手

飞书即时消息用户使用场景&#xff1a; 许多企业都在使用飞书系统进行协同办公&#xff0c;而现在有了Cohere大语言模型技术&#xff0c;能够根据用户的提问来自动产生回答&#xff0c;无需人为干预。对于企业负责人来说&#xff0c;他们认为如果将Cohere技术融入到飞书机器人中…

CCF-CSP 30次 第二题【矩阵运算】

计算机软件能力认证考试系统 #include<bits/stdc.h> using namespace std; const int N1e410; #define int long long int n,d; int q[N][22],k[22][N],v[N][22],w[N]; int ans1[N][22],ans2[N][22]; signed main() {scanf("%lld %lld",&n,&d);for(in…

Ubuntu----Linux命令-----防火墙(查看、关闭、启动)

一、查看防火墙状态 命令&#xff1a;ufw status 说明&#xff1a; 活动&#xff1a;防火墙是开启的 不活动&#xff1a;防火墙是关闭的 二、开启防火墙 命令&#xff1a;sudo ufw enable 开启防火墙后&#xff0c;可以查看防火墙状态 三、关闭防火墙 命令&#xff1a;sud…

喜报丨迪捷软件入选浙江省2023年省级产业数字化服务商

近日&#xff0c;根据《关于组织开展2023年度省级产业数字化服务商申报工作的通知》要求&#xff0c;省经信厅公布2023年省级产业数字化服务商名单&#xff0c;浙江迪捷软件科技有限公司榜上有名。 省级产业数字化服务商上榜名单的评选在企业申报、地方推荐、专家评审、综合评估…

小白备战大厂算法笔试(四)——哈希表

文章目录 哈希表常用操作简单实现冲突与扩容链式地址开放寻址线性探测多次哈希 哈希表 哈希表&#xff0c;又称散列表&#xff0c;其通过建立键 key 与值 value 之间的映射&#xff0c;实现高效的元素查询。具体而言&#xff0c;我们向哈希表输入一个键 key &#xff0c;则可以…

软件系统功能测试的依据

验收测试 一、软件系统功能测试的依据&#xff1a; 采用GB/T 25000.51-2016系统与软件工程系统与软件质量要求和评价(SQuaRE)第51部分&#xff1a;就绪可用软件产品(RUSP)作为测试依据 二、常用功能测试方法&#xff1a; 界面测试 是指对使用界面的软件进行的软件测试&…

docker安装mysql、clickhouse、oracle等各种数据库汇总

1&#xff1a;docker 安装mongo数据库并使用 官网&#xff1a;https://www.mongodb.com/docs/manual/ mongo shell教程1&#xff1a;http://c.biancheng.net/mongodb2/connection.html 安装1 &#xff1a;https://www.zhihu.com/question/54602953/answer/3047452434?utm_id0…

jmeter 准确的吞吐量定时器 Precise Throughput Timer

准确的吞吐量定时器使用实例 提取码&#xff1a;gpex&#xff1a; 说明&#xff1a;配置10个线程&#xff0c;每个线程请求200次&#xff0c;通过准确地的定时器模拟QPS为20的场景 配置测试接口参考链接 配置jmeter测试脚本&#xff0c;主要关注准确的吞吐量定时器参数配置 目…