JavaSE_2_3循环,方法与递归_第1页
JavaSE_2_3循环,方法与递归_第2页
JavaSE_2_3循环,方法与递归_第3页
JavaSE_2_3循环,方法与递归_第4页
JavaSE_2_3循环,方法与递归_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 循环语句 for 循环 while 循环 do-while 循环 特殊的循环控制语句 递归 方法的声明,调用,重载主要内容v程序有三种结构: 顺序结构 程序从上到下一行一行的执行代码,没有判断和中转。 选择结构 if-else switch 循环结构2PFTA(1) 当型结构 当P条件成立时(T),反复执行A,直到P为 假 时才停止循环.有两种结构:当型和直到型(2) 直到型APTF 先执行A, 再判断P,若为T,再执行A,如此反复,直到P为F.循环语句功能 在循环条件满足的情况下,反复执行特定代码循环语句的四个组成部分 初始化部分:对循环变量赋初值 循环条件部分:判断循环变量是否超出某个界

2、限 循环体部分:要循环执行的具体逻辑. 迭代部分:修改循环变量的值循环语句分类 for 循环 while 循环 do/while 循环为什么要有循环为什么要有循环? ?1+2+3+4+5.int sum = 0;sum = sum + 1;sum = sum + 2;sum = sum + 3;sum = sum + 4;sum = sum + 5; 1. 形式首先计算表达式1,接着计算表达式2,若表达式2的值=true,则执行循环体,接着计算表达式3,再判断表达式2的值.依此重复下去,直到表达式2的值=false。2.执行过程for(表达式1; 表达式2; 表达式3) 循环体流程:计算表达式

3、1求表达式2值语句计算表达式3结束for语句falsetrue语法格式 for (循环变量初始值设定; 循环条件判断; 改变循环变量的值) 循环体应用举例:输出1+2+.+100的和public class ForLoop public static void main(String args) int result = 0; for(int i=1; i=100; i+) result += i; System.out.println(result= + result); 演示与练习演示与练习1:求1-5的和/积。1+2+3+4+5,1*2*3*4*52:分别求1-100内奇数/偶数的和,并

4、打印出来。3:求1-100内能被3整除,不能被5整除的数字。4:练习3中共有多少个。5:练习3中的结果,每行打印5个。6: 打印乘法表1*1=12*1=22*2=43*1=33*2=63*3=94*1=44*2=84*3=124*4=16.需要两层循环,外层循环控制第一个乘数,内层循环控制第二个乘数形式: while (boolean表达式) 语句块执行过程: 先判断表达式的值。若=true.则执行其后面的语句,然后再次判断条件并反复执行,直到条件不成立为止while语句(语句(当当型循环)型循环)语法格式 init_statement/初始化while( test_exp)/循环条件 bod

5、y_statement;/循环体alter_statement;/迭代部分v语法格式 while( 条件表达式语句) 循环体语句; v应用举例public class WhileLoop public static void main(String args) int result = 0; int i=10; while(i=100) result += i; i+; System.out.println(result= + result); 13注意事项 语句中应有使表达式=false的语句。 否则会出现无限循环死循环。 while后面的语句一般为语句块, 即:加 v练习:v用while循

6、环计算1000以内的奇数的和v注意:避免死循环 一种专门的直到型 循环语句。2. 执行过程: 先执行语句,再判表达式的值,若为true,再执行语句,否则结束循环3. 流程:语句表达式=true=false1. 形式: do 语句块while(表达式) ;语法格式 初始条件do 循环体; 迭代while( 循环条件判断); 应用举例public class WhileLoop public static void main(String args) int result = 0, i=1;do result += i; i+;while(i=100);System.out.println(res

7、ult= + result); while语句与dowhile语句的区别: 当第一次执行时,若表达式=false时,则while语句与do while有所不同,do while 执行一次后面的语句,而while不执行。v打印输出0200之间能被7整除但不能被4整除的所有整数;要求每行显示6个数据;v计算10!(10的阶乘)结果;数字求和游戏:v1:求如果指定基数base为2,次数count为5, 则求2+22+222+2222+22222的值; v2: 3+33+333:基数的数值和相加的次数可以在控制台输入v3:循环运行上述游戏,每次玩完后,提示1:继续输新的基数,次数,重新开始游戏; 2:

8、结束程序19演示演示DemoDemobreak 语句break语句用于终止某个语句块的执行 break; break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块 label1: while() label2: for() label3:while() break label1; . break 语句用法举例 public class TestBreakpublic static void main(String args) for(int i = 0; i10; i+) if(i=3)break; System.out.println( i = + i); Syste

9、m.out.println(Game Over!);public class TestBreakpublic static void main(Stringargs)outer:for(int i = 0;i 5;i +)for(int j = 0;j 3;j +)System.out.println(j);if(j = 2) break outer;System.out.println(j != 2);/forSystem.out.println(test continue);/for.continue 语句 continue语句用于跳过某个循环语句块的一次执行 continue语句出现在多

10、层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 continue语句用法举例1public class ContinueTest public static void main(String args) for (int i = 0; i 100; i+) if (i%10=0) continue; System.out.println(i); 笔试面试时注意措辞笔试面试时注意措辞跳出/跳过 一次/某次 循环 -continue跳出/结束 整个/全部 循环 -break难点难点: :素数素数也叫质数.是除了1和其本身,不能被其他正整数整除的正整数.例如:2,3,5,7,11,13

11、,17,19,23.public class PrimeNumberpublic static void main(String args) int n = 0; outer: for(int i=101;i200;i+=2) /外层循环 for(int j=2; ji;j+) /内层循环 if(i%j=0) continue outer; /能不能使用 break ,为什么? System.out.print( + i); n+; if(n6 ) continue; System.out.println(); /输出六个数据后换行 n = 0; continue举例2 (输出101-200之

12、间的所有素数) 表达式2一般不可省略,否则为无限循环相当于: i=1;while (true) sum=sum+i; i+; 例: for (i=1; ; i+) sum=sum+i;相当于条件永真、永不为false,若用while表示 表达式表达式3 亦可省略,但在循环体中须有语句修改循环变量;以使 表达式表达式2 在某一时刻为false而正常结束循环。例: for (sum=0,i=1 ;i=100; ) sum=sum+i; i+; 若同时省略表达式表达式1,表达式表达式3,则相当于while(表表达式达式2)语句。相当于 while (i=100) sum+=i; i+; 例: for

13、 ( ; i=100; ) sum+=i; i+; 三个表达式均省略 即for(;)语句,此时相当于while(true)语句.表达式1、表达式3可以是逗号表达式,以使循环变量值在修改时可以对其它变量赋值。例如:for (int sum=0, i=1; i=100; i+, i+ )等价于:int sum=0; for (int i=1; ib ab?a:b在方法中调用方法 在同一个类中可以定义多个同名方法-方法重载public class PrintStream .public void println(int i) /重载了10次public void println(float f) p

14、ublic void println(String s) . 重载方法的参数列表必须不同 重载方法的返回值类型,权限,其他修饰符可以相同,也可以不同问题问题:求给定整数的阶乘,例如5! = 5*4*3*2*1,如何实现?1.使用循环语句2.使用递归public int method1(int n)if(n = 1)return 1;elsereturn n*method1(n-1);递归的基本思想是以此类推递归方法解决问题的两个步骤:1. 求得范围缩小的同性质问题的结果2. 利用这个已得到的结果和几个简单的操作求得问题的最后解答当同性质的问题被简化得足够简单时,将可直接获得问题的答案,而不必再

15、调用自身练习练习: :用递归解决1+2+3+.+100的求和问题.int sum(int a) /递归调用:1.出口;2.缩小规模求Fibonacci数列: 1, 1, 2, 3, 5, 8, 第40个数的值。程序要点:1.使用递归:效率低2.不使用递归:效率高int total = 0,a = 1,b=1;/a是上上个月的兔子对数,b是上个月的兔子对数,total是当月的兔子对数for(int i = 3;i 2)递归的实际应用递归的实际应用遍历一个文件夹及其子文件夹中的文件v标识符v关键字v局部变量 & 全局变量 变量的作用域 变量在内存中的存放格局v基本数据类型 4类8种,类型之间的互相转换v条件、循环语句 if switch for while do/whilev方法 形参、实参、返回值 方法的重载v递归算法: 找递归出口,设置逻辑递推, 逐步向出口逼近45importimport java.util.Random;Random r = new Random();/用于产生随机数的类int i = r.nextInt(6)+1;/产生1,6的随机数46

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论