▪ 生活中的循环
打印50份试卷 10000米赛跑 锲而不舍地学习 旋转的车轮
▪ 循环结构的特点
循环结构 循环条件 循环操作
循环结构都由如下四个结构组成:
初始化、条件判断、循环体、迭代
while循环
▪ 在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后 来每一次额外的循环,都会在开始前重新计算一次。
▪ 语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。

示例: 使用while循环求0-100的和
public class Test2 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i <= 100) {
sum += i; //sum = sum+i;
i++;//没有i++;这种迭代语句将会成为死循环一直运行下去,直至内存溢出
}
System.out.println("Sum= " + sum);
}
}
do-while循环
du-while与while的区别:
①▪ do-while: 先执行,后判断。
②▪ while: – 先判断,后执行。
③do-while至少会被循环一次

public class Test2 {
public static void main(String[] args) {
//while循环
int a = 0;
while(a < 0){
System.out.println(a);
a++;
}
System.out.println("-----------------");
//do-while 循环
a=0;
do{
System.out.println(a);
a++;
}while(a < 0);
}
}
for循环
▪ for循环语句是支持迭代的一种通用结构,是最有效、最灵 活的循环结构
▪ 语法形式
▪ for (初始表达式;布尔表达式;步进) { 循环体;
▪ }
▪ 注意事项 – for循环在执行条件测试后,先执行程序部分,再执行步进。 – 在for语句的初始化部分声明的变量,其作用域为整个for循环体 – “初始化”和“循环条件表达式”部分可以使用逗号来执行多个操作 – 如果三个部分都为空语句(分号;能省),相当于一个无限循环。

示例:
public class Test2 {
public static void main(String[] args){
//用for循环输出3次Hello World
for (int i = 0; i < 3; i++) {
System.out.println("Hello World");
}
}
}
案例:
public class Test2 {
public static void main(String[] args){
//求1-5之间的数据和,并把求和结果在控制台输出
int sum = 0;//定义一个整数变量sum用来累加这些数据
for (int i = 1; i <= 5; i++) {
sum += i;
}
System.out.println("1-5的和是:" + sum);
System.out.println("------------------------------------------------------------");
// 在for循环中通过if筛选出奇数 求1-10的奇数和
int a = 0;//定义一个求和的变量,累加奇数和
for (int i = 1; i <= 10 ; i++) {
if(i%2 == 1){ //筛选出奇数
a += i;
}
}
System.out.println("1-10的奇数和是:" + a);
}
}
总结:
三种循环的区别:
①for循环和while想你换(先判断在执行)
②do-while循环(先执行后判断)
for和while的区别:
①for循环和while循环的执行流程是一摸一样的。
②如果已知循环次数建议使用for循环如果不清楚要循环多少次建议使用while循环
③for循环中控制循环的变量只在循环中可以使用
跳转语句---break和continue
▪ 在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环, 并执行循环中剩余的语句。(break语句还可用于多支语句switch中)
▪ continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行 的语句,接着进行下一次是否执行循环的判定。
示例:
public class Test2 {
public static void main(String[] args){
//生成0-100随机数,直到生成88为止,停止循环 break语句
int total = 0 ;
System.out.println("Begin");
while(true){
total++;
int i = (int)Math.round(100*Math.random());
if(i == 88)break;
}
System.out.println("Game over,used" + total +"times");
System.out.println("-----------------------------------------------------------");
//把100-150之间不能被3整除的数输出:continue语句
for (int i = 100; i < 150; i++) {
if(i%3 == 0)
continue;
System.out.println(i);
}
}
}
跳转语句---return
▪ return语句从当前方法退出,返回到调用该方法的语句处,并从 该语句的下条语句处继续执行程序。
▪ 返回语句的两种格式(具体到方法时详细讲解)
– 1、return expression
▪ 返回一个值给调用该方法的语句。
▪ 返回值的数据类型必须和方法声明中的返回值类型一致或是精度低于声明的数据 类型。
– 2、return
▪ 当方法声明中用void声明返回类型为空时,应使用这种返回类型,它并返回任何值。
public class Test2 {
public static void main(String[] args){
int rs = add(100,200);
System.out.println("和是:" + rs);
}
public static int add(int a,int b){
int c = a+b;
return c;
}
public class Test2 {
public static void main(String[] args){
System.out.println("开始");
chu(10,0);
System.out.println("结束");
}
public static void chu(int a,int b){
if(b == 0){
System.out.println("您的数据有误");
return;
}
int c = a/b;
System.out.println("除法结果是:" + c);
}
多重循环
▪ 三种循环方式
– while
–do-while
– for
▪ 多重循环(循环嵌套)
– 一个循环体内又包含另一个完整的循环结构
– 任何两种循环都可以相互嵌套
– 可以任意层次循环,但是一般并超过3层
▪ 多重循环执行过程
– 外层循环变量变化一次,内层循环变量要变化一遍
for(循环条件1){
//循环操作1
for(循环条件2){
//循环操作2 }
}
while(循环条件1){
//循环操作1
for(循环条件2){
//循环操作2
}
递归算法
▪ 什么是递归(recursion)
– 程序调用自身的编程技巧称为递归。
– 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法
▪ 递归问题的特点
– 一个问题可被分解为若干层简单的子问题
– 子问题和其上层问题的解决方案一致
– 外层问题的解决依赖于子问题的解决
▪ 递归的优点
– 简单的程序
▪ 递归的缺点
– 但是递归调用会占用大量的系统堆栈,内存耗用多
– 在递归调用层次多时速度要比循环慢的多
▪ 递归的使用场合
– 任何可用递归解决的问题也能使用迭代解决。
– 当递归方法可以更加自然地反映问题,并且易于理解和调试,并且并强调效率问题时,可以采用递归。
– 在要求高性能的情况下尽量避免使用递归,递归既花时间又耗内存。
递归算法:在程序运行过程中,发生程序本身调用自己的情况,称之为递归
注意:
1、能不使用递归算法尽量不使用递归算法
使用递归算法会加大资源的消耗
如果递归算法的深度过于深,那么可能造成栈溢出
2、如果用其他方法无法实现,就必须用递归
例如:输出电脑上某一个磁盘上的所有文件名
public class Test2 {
public static int getNumber(int number) {
if (number == 1 || number == 2) {
return 1;
} else {
return getNumber(number - 1) + getNumber(number - 2);
}
}
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.print(getNumber(i) + "\t");
}
}
}
1万+

被折叠的 条评论
为什么被折叠?



