ImageVerifierCode 换一换
格式:PPT , 页数:46 ,大小:888KB ,
资源ID:3312579      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-3312579.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(浙大 Java语言程序设计 第四讲.ppt)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

浙大 Java语言程序设计 第四讲.ppt

1、1,第 4 章 方法 Method,4.1 方法声明 4.2 方法调用 4.3 参数传递 4.4 递归课程教学重点之一,2,概念,方法( Method )这是Java的一种命名和通常意义上的“方法”不同 在其他语言中,叫做“子程序”、“函数” 如:main( )方法 “方法”的定义 完成特定功能的、相对独立的程序段 “方法”的特点 可以在不同的程序段中被多次调用可增强程序结构的清晰度,提高编程效率学习重点 方法的声明和调用,3,第一个例子,编程实现数学计算 Y=(1, 2, 100)+(200,201, 298)+(-1,-2 -99)+(51,52, 199) 如何实现? 使用4 个循环,4

2、,第一种做法,public class Sum4_1 public static void main(String args) int i, y=0;for( i=1; i=100; i+) /(1,2, 100)y=y+i;for( i=200; i=298; i+) /+(200,201,298)y=y+i;for( i=-99; i=-1; i+) /+(-1,-3,-99)y=y+i;for( i=51; i=199; i+) /+(51,52,199)y=y+i;System.out.println(“The Rusult: “+y); ,编写一个累加的“子程序”,然后调用4次?,T

3、he Result: 43376,5,第二种做法,6,第二个例子,输入4个整数,求它们中的最大数。 实现途径 直接求解4个数的大小 编写从两个数中找最大数的方法,再多次调用这个方法哪个更好?,7,第一种做法,8,第二种做法,9,什么时候使用“方法”,用户程序中经常重复的任务 用户自己编写“方法”代码 常用的任务由Java提供 数学函数 输出操作( print、println ) 字符串操作 界面操作 ,10,4.1 方法声明,方法的规则 先声明,后使用 只能在类(Class)中声明 方法声明的格式修饰符 返回值类型 方法名( 参数表 )变量声明语句,方法头,方法体 实现具体功能,return

4、表达式; /返回方法的结果,终止方法的执行,11,方法声明格式的说明,修饰符:static public private protected 返回值类型 返回结果的数据类型,如:int、float、String等 无返回值时用void 方法名: 用户定义的标识符,要符合命名规则 参数表: 调用方法时,传递的参数及其数据类型 相邻的两个参数之间用逗号隔开,修饰符 返回值类型 方法名(参数表) 变量声明语句 ,12,【例4-1】计算平方值的方法,static int square(int x)int s;s=x*x; return s;,类型修饰符,方法名,参数,变量声明,语句,返回语句,方法头,

5、13,4.2 方法调用,方法定义 执行方法 调用方法 调用格式一 方法表达式方法名( 实际参数表 ) 有返回值的方法,可作为一个表达式或者一个具体的数值来使用 如:y = square(20);,14,实际参数 n,形式参数 x,【例4-2】 以方法表达式方式调用方法,注意:实参的个数、顺序、类型要和实参一一对应,15,方法语句,调用格式二 方法语句方法名( 实际参数表 ); 无返回值的方法,以独立语句的形式调用 方法前面的类型修饰符为 void,16,【例4-3】 以方法语句方式调用方法,方法语句,17,【例4-4】无参方法,有些方法没有输入参数,18,第4 章习题 2,编写两个方法,分别求

6、两个整数的最大公约数和最小公倍数。 求最大公约数可用辗转相除法 欧几里得算法 (1) a 除以b,得余数为r (2) 若r0,则 b 为最大公约数若r0,则 b 赋值给 a,r 赋值给 b,继续以上步骤 (3) 经过有限步后,r = 0 最小公倍数为a*b/最大公约数,a b r 9 6 3 6 3 0 r = a % b,19,第4 章习题 2 程序一,20,第4 章习题 2 程序二,输入: 8 6 最大公约数是 2 最小公倍数是 24输入: 5 3 无最大公约数 最小公倍数是 15输入: 675 351 最大公约数是 27 最小公倍数是 8775,21,第4 章习题 6,编写方法,判断一个

7、三位数是否是水仙花数 方法的返回值 true 是水仙花数 false 不是水仙花数,static boolean isNarcissus(int n) int a, b, c;a=n/100;b=n/10%10;c=n%10;if(n=a*a*a+b*b*b+c*c*c)return true;elsereturn false; ,22,第4 章习题 6 程序,23,4.3 参数传递,参数传递规则 调用带参数的方法时,必须提供实参 实参 形参,称为参数传递 被调用的 方法用实参执行方法体 实参可以是常量、变量、表达式 所有类型的参数传递都是“值传递” 调用时把实参的值传递给形参 问题 如果形参

8、变了,实参会变吗?,24,【例4-5】交换两个变量的值,运行结果 调用前:u=23 v=10,交换前:x=23 y=10 交换后:x=10 y=23 调用后:u=23 v=10,25,【例4-5】值传递的例子,运行的结果 调用前:u=23 v=10 交换前:x=23 y=10 交换后:x=10 y=23 调用后:u=23 v=10 说明 参数传递: u x ;v y 调用前后:u、v 的值没有变 交换前后:x、y的值改变了,26,4.4 递归,用自身的结构来描述自身 典型例子阶乘运算 递归就是自己调用自己,27,【例4-6】采用递归算法求n!,求n! 的算法n! = n(n-1)! (n-1)

9、! = (n-1)(n-2)! (n-2)! = (n-2)(n-3)!2! = 21! 1! = 1,递归定义 fac(n) = n! fac(n) = n* fac(n-1) fac(n)=1 当n=1时,static long fac(int n) if(n=1)return 1;elsereturn n*fac(n-1); ,28,【例4-6】程序,29,递归实现过程递推和回推,fac,fac(5)=5 fac(4),fac,fac,fac,fac,fac,fac,fac (1),fac(4)=4 fac(3),fac(3)=3 fac(2),fac(2)=2 fac(1),30,非递

10、归算法求n!,static long fac(int n) long f=1;for (int i=1;i=n;i+)f=f*i;return f; ,使用循环结构计算阶乘,static long fac(int n) if(n=1)return 1;elsereturn n*fac(n-1); ,与递归算法比较,31,递归程序设计的规范,递归的两个要素 递归公式 找出前后项之间的关系 递归出口 递归终止条件 第一项的值,32,递归程序设计例子一,例:递归计算 s =1+2+3+4+100 递归公式s(n) = s(n-1)+n 递归出口s(0)=0,static int s(int n) i

11、f(n=0) return 0;else return s(n-1)+n; ,return (n=0)? 0: s(n-1)+n;,33,递归程序设计例子二,例:求 Fibonacci 数列中的前20项 递归公式f(n) = f(n-1)+f(n-2) 递归出口f(1)=1 ,f(2)=1,static int f(int n) if(n=1|n=2) return 1;else return f(n-1)+f(n-2); ,34,【例4-7】汉诺塔(Hanoi)问题,据古印度神话,在贝拿勒斯的圣庙里安放着一块铜板,板上有3根宝石针。梵天(印度教的主神)在创造世界的时候,在其中的一根针上摆放了

12、由小到大共64片中间有空的金片。无论白天和黑夜,都有一位僧侣负责移动这些金片。移动金片的规则是:一次只能将一个金片移动到另一根针上,并且在任何时候以及任意一根针上,小片只能在大片的上面。当64个金片全部由最初的那根针上移动到另一根针上时,这世界就在一声霹雳中消失。,35,【例4-7】汉诺塔(Hanoi)问题,将64 个金片从杆A搬到杆B 一次只能搬一个金片 金片只能插在A、B、C三个杆中 大片不能压在小片上,A B C,36,算法,hanio(n个金片,AB) / C为过渡 hanio(n-1个金片,AC) / B为过渡把n号金片ABhanio(n-1个金片,CB) / A为过渡 ,A (n个

13、金片) B C,if (n = 1)直接把金片AB else ,37,方法,/* 搬动n个金片,从a到b,c为中间过渡 */ static void hanio(int n, char a, char b, char c) if (n=1) System.out.println(a+“+b);else hanio(n-1, a, c, b);System.out.println(a+“+b);hanio(n-1, c, b, a); ,hanio(n个金片,AB) / C为过渡 if (n = 1) 直接把金片ABelse hanio(n-1个金片, AC)把n号金片ABhanio(n-1个金

14、片, CB) ,38,【例4-7】汉诺塔(Hanoi)问题,39,【例4-7】汉诺塔(Hanoi)问题 P.53,40,【例4-7】汉诺塔(Hanoi)问题,金片为3个,需7步完成 金片为64个,需264-1步完成 若每秒1步,需58万亿年 若计算机每秒运算100万次,需5800万年,运行结果: The steps for 3 disk are: AB AC BC AB CA CB AB,41,【例】十进制整数转换成二进制数,设计方法,实现十进制整数转换成二进制 除2 取余法 如:35 的二进制值为 100011,n,n%2 t,n/2n,n=0时停止 即n0时重复,字符串 s,s 初值为“

15、s = t + s,static String dectobin(int n)int t; /保存某位二进制String s=“; /保存二进制数do t=n%2; /获得除2后的余数s=t+s; /拼接n=n/2; /获得除2后的商 while(n0);return s; ,42,【例】十进制整数转换成二进制数,43,【例】十进制整数转换成二进制数,考虑十进制整数有负数的情况 如:-35 的二进制值为 -100011,static String dectobin(int n)int t; /保存某位二进制String s=“; /保存二进制数 do t=n%2; /获得除2后的余数s=t+s

16、; /拼接n=n/2; /获得除2后的商 while(n0);return s; ,44,import java.util.*; public class T1 static String dTob(int n)String s;if(n0) s=“-“+dTob(-n);else if(n2) s=“+(char)(n+(int)(0);else s=dTob(n/2)+(char)(n%2+(int)0);return s; ,【例】十进制整数转换成二进制数,递归方法,45,Review: about Method,Method (方法) 相当于函数或子程序 编写Method (方法) 方法类型(返回值),方法名,形式参数 在 class (类) 中编写 不能嵌套 调用Method (方法) 格式 方法表达式:方法有返回值 方法语句:方法没有返回值(void) 在Main方法中调用 也可在Method (方法) 中调用递归,46,Review: about Method,要求 能解读“方法”的程序代码 能编写简单的“方法” 常用的方法(自定义) 水仙花数 Fibonacci数列 计算阶乘 求阶乘之和 计算多项式例如第4章习题3 计算公约数、公倍数 判断素数,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报