笔记05 嵌套循环和递归调用

来源:互联网 发布:淘宝店招在线生成 编辑:程序博客网 时间:2024/06/06 05:00

1 switch 多分支选择结构

/*1、选择结构中的: 多分支选择结构语句  (switch语句)1) 格式:switch( 表达式 ) {case 值1 : 语句系列1; [ break; ]case 值2 : 语句系列2; [ break; ]case 值3 : 语句系列3; [ break; ]......case 值n : 语句系列n; [ break; ][default : 语句系列m; ]}2) 规则:先计算表达式的值,再找到与表达式的值对应的case,做它后面所有语句系列,直到遇到 break; 语句时结束整个switch。当遇不到break; 时,则继续做下面的所有语句系列。若找不到与表达式的值对应的case,且 default 项存在时,则做它的语句系列m,之后结束整个switch语句。3) 注意事项:a) 表达式的值必须是 byte 或 short 或 char 或 int 型数据。b) case 后的值1、值2、值3、...、值n均必须是 byte或short或char或int型常量。即: case后必须是常量,不可是变量。c) 当连续的多个case,其后的语句系列相同时,则前n-1个语句系列可以省略。(case穿透)*/public class  SwitchTest {public static void main( String[] args ) {//产生一个随机的字母char ch = 'o'; //(char)( 26 * Math.random() + 'a' );String str = "" ; //准备一个str变量来存放结果switch( ch ) {case 'a' :   case 'e' :  case 'i' :  case 'o' :   case 'u' :  str = "元音" ;  break;case 'y' :   case 'w' :  str = "半元音" ; break;default  : str = "辅音"  ;}System.out.println("\n产生的随机字母是: \'" + ch + "\'" + ",它属于: " + str ) ;}}


2 for循环

/*1、for循环for( 表达式1 ;  条件;  表达式3 ){循环体;}规则: 先执行表达式1,再去判断条件;条件成立执行循环;    然后,跳到表达式3处执行;之后再去判断条件;若条件仍然成立,    则继续执行循环体;依次下去,直到条件不成立而结束整个for循环。1) 在java语言中,for循环头部的三个表达式可以省略。结论:a) 若省略表达式1,则必须在for循环前声明它。b) 若省略表达式3,则往往将它置于循环体中。c) 若省略表达式2(条件),则往往需要在循环体中用if和break配合实现。2) 在java语言中,for循环头部的三个表达式可以扩展。结论:a) 表达式1扩展往往通过逗号来实现。b) 表达式3扩展也往往通过逗号来实现。c) 表达式2(条件)扩展往往通过逻辑运算符来实现。   */public class ForTest { public static void main(String[] args){  // 编写一个程序,输出九九乘法表;    for(int i = 1 ; i <= 9 ; i++ ){  //控制行输出;      for(int j = 1;  j <= i; j++ ){      if(i*j <10 ){     System.out.print( j + "*" + i + "= " + (i*j) + "  " );    }else{    System.out.print( j + "*" + i + "=" + (i*j) + "  " );    }   }   System.out.println();} }

3 嵌套循环

/*1、嵌套为什么需要循环,为什么需要嵌套循环?将一个语句或多个语句需要反复执行时,则使用循环其效率会更高。中心放射法2、顺向去分析、理解这个嵌套循环(也就是嵌套循环的执行顺序)。5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5  5 5   5 5 5  5 5 5 5  5 5 5 5 5     5     5 5     5 5 5   5 5 5 5  5 5 5 5 5 */public class  QuTest4 {public static void main( String[] args ) {char ch = 'a';for( int r = 1;  r <= 5;  r++ ){for(int k = 1;  k <= 5 - r;  k++ ){ //总行数 - 第几行System.out.print( " " );}for( int n = 1;  n <= r  ;  n++ ){System.out.print( ch + " ");}System.out.println(); //换行}//System.out.println("" + "AA");}}

4 递归

/*1、什么是递归?定义: 在一个方法的方法体中出现了调用本身的现象。理解: 递是指传递下去,直到末尾的结果(递归的出口);归是指从末尾的结果处一层一层地返回,直到入口处而结束。2、案例: 求 1 + 2 + 3 + ... + 100 = ? 用递归实现分析: 业务是从1 至 100的累加,因此,假设:f( 100 ) == 1 + 2 + 3 + ... + (99) + 100 f(  99 ) == 1 + 2 + 3 + ... + (98) + 99所以,可推出>>>>>  f(100) == 100 + f( 99 );又有, f( 1 ) ==  1;若再次假设 n == 100 ,则以上式子变为:  f( n ) == n + f(n-1);思考: 求  5! ,用递归实现其结果。求  1! + 2! + 3! + ... + 10! = ? 用递归实现,不能出现循环语句。5! 阶乘( 连乘 1 * 2 * 3 * 4 * 5 )*/public  class   RecallMethodTest {public static void main( String[] args ) {int sum = 0;/*for( int i = 1; i <= 100; i++ ){sum += i;}*/int n = 100;sum = f( n );System.out.println("1 + 2 + 3 + ... + " + n + " = " + sum );}//编写一个 f(n)方法, 用来求1 + 2 + 3 + ... + n 的值。public static  int   f( int n ){if( n == 1 ) {return 1;//末端,它是递归出口。}else{return  n + f( n - 1 );  //在此出现了调用方法本身的现象。}}}


 

 

 

 

 

 

0 0
原创粉丝点击