汉诺塔课件学习教案.pptx
《汉诺塔课件学习教案.pptx》由会员分享,可在线阅读,更多相关《汉诺塔课件学习教案.pptx(87页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学 1汉诺塔课件第一页,共87 页。Contents7.1 为什么要用函数(hnsh)7.2 怎样定义(dngy)函数7.3 调用函数7.4 函数声明(shngmng)和函数原型7.5 函数的嵌套调用第 1 页/共 86 页第二页,共87 页。Contents7.6 函数(hnsh)的递归调用7.7 数组作函数参数7.8 局部变量和全局变量7.9 变量(binling)存储方式和生存期7.10 变量的声明(shngmng)和定义第 2 页/共 86 页第三页,共87 页。复习(fx)将事先编好的函数,采用“组装”的办法简化(jinhu)程序设计的过程。1.模块化程序设计(chn x sh
2、j)思路main()a()b()c()d()e()f()h()g()m()第 3 页/共 86 页第四页,共87 页。复习(fx)将事先编好的函数,采用“组装”的办法简化(jinhu)程序设计的过程。function 功能。所以(suy),从本质意义来说函数就是用来完成一定功能的。1.模块化程序设计思路2.函数是从英文哪个单词翻译过来的第 4 页/共 86 页第五页,共87 页。复习(fx)将事先编好的函数,采用“组装(z zhun)”的办法简化程序设计的过程。function 功能(gngnng)。所以,从本质意义来说函数就是用来完成一定功能(gngnng)的。则使用函数可以实现代码的()性
3、。1.模块化程序设计思路2.函数是从英文哪个单词翻译过来的3.若程序中要多次实现某一功能第 5 页/共 86 页第六页,共87 页。复习(fx)将事先编好的函数,采用(ciyng)“组装”的办法简化程序设计的过程。function 功能。所以(suy),从本质意义来说函数就是用来完成一定功能的。则使用函数可以实现代码的(重用)性。1.模块化程序设计思路2.函数是从英文哪个单词翻译过来的3.若程序中要多次实现某一功能第 6 页/共 86 页第七页,共87 页。复习(fx)形参 实参4.函数调用过程(guchng)int max(int x,int y)int max(int x,int y)in
4、t z;int z;z=(xy)?x,y;z=(xy)?x,y;return z;return z;c=max(a,b);c=max(a,b);(main函数(hnsh)值3 9第 7 页/共 86 页第八页,共87 页。复习(fx)int max(int x,int y)int max(int x,int y)int z;int z;z=(xy)?x,y;z=(xy)?x,y;return z;return z;c=max(a,b);c=max(a,b);(main 函数(hnsh)形参 实参值3 94.函数调用过程(guchng)第 8 页/共 86 页第九页,共87 页。复习(fx)in
5、t max(int x,int y)int max(int x,int y)int z;int z;z=(xy)?x,y;z=(xy)?x,y;return z;return z;c=max(a,b);c=max(a,b);(main函数(hnsh)形参 实参值3 994.函数调用过程(guchng)第 9 页/共 86 页第十页,共87 页。复习(fx)int max(int x,int y)int max(int x,int y)int z;int z;z=(xy)?x,y;z=(xy)?x,y;return z;return z;c=max(a,b);c=max(a,b);(main函数
6、(hnsh)调用调用(dioyng)(dioyng)前,前,形参形参xx和和yy不占内存不占内存调用时,为形参调用时,为形参xx和和yy分配内存分配内存结束时,结束时,释放释放xx和和yy 形参 实参值3994.函数调用过程第 10 页/共 86 页第十一页,共87 页。复习(fx)声明(shngmng)的作用5.函数(hnsh)声明把函数头信息把函数头信息,如如int max(int x,int y)int max(int x,int y)通知给编译系统,以便在调用时系统通知给编译系统,以便在调用时系统按按此此检查检查调用的合法性调用的合法性。c=max(a,b);c=max(a,b);第
7、1 1 页/共 86 页第十二页,共87 页。复习(fx)在 哪里 对 谁 进行声明:主调函数(hnsh)内部对被调用函数(hnsh)进行声明5.函数(hnsh)声明若若main()main()调用调用max()max(),则在(,则在()函数内)函数内部,对(部,对()函数进行声明。)函数进行声明。第 12 页/共 86 页第十三页,共87 页。复习(fx)在 哪里 对 谁 进行(jnxng)声明:主调函数内部对被调用函数进行(jnxng)声明5.函数(hnsh)声明若若main()main()调用调用max()max(),则在(,则在(mainmain)函数)函数内部,对(内部,对(max
8、max)函数进行声明。)函数进行声明。第 13 页/共 86 页第十四页,共87 页。复习(fx)声明方法:函数(hnsh)原型(首部)加分号5.函数(hnsh)声明void main()void main()int a,b;int a,b;int max(int x,int y);int max(int x,int y);第 14 页/共 86 页第十五页,共87 页。复习(fx)与函数定义的区别:函数定义是指对函数功能(gngnng)的确立。包括函数首部和函数体两部分5.函数(hnsh)声明int max(int x,int y)int max(int x,int y)int z;int
9、z;z=xy?x:y;z=xy?x:y;return z;return z;与变量类似,先定义,后使用。第 15 页/共 86 页第十六页,共87 页。复习(fx)在()情况(qngkung)下,声明也可以被省略。5.函数(hnsh)声明int max(int x,int y)int max(int x,int y)int z;int z;z=xy?x:y;z=xy?x:y;return z;return z;void main()void main()int a=3,b=9,c;int a=3,b=9,c;c=max(a,b);c=max(a,b);第 16 页/共 86 页第十七页,共87
10、 页。复习(fx)在()情况下,声明也可以(ky)被省略。5.函数(hnsh)声明int max(int x,int y)int max(int x,int y)int z;int z;z=xy?x:y;z=xy?x:y;return z;return z;void main()void main()int a=3,b=9,c;int a=3,b=9,c;c=max(a,b);c=max(a,b);主函数和其它函数,表面上平行并列 的关系,实际上是主调与被调 的关系第 17 页/共 86 页第十八页,共87 页。复习(fx)一个函数(hnsh)的执行过程中,又去调用另一函数(hnsh)。6.函
11、数(hnsh)的嵌套调用int int max4max4(int a,int b,int c,int d)(int a,int b,int c,int d)int m,n;int m,n;m=m=max2max2(a,b);(a,b);n=n=max2max2(c,d);(c,d);return return max2max2(m,n);(m,n);第 18 页/共 86 页第十九页,共87 页。复习(fx)一个函数的执行过程(guchng)中,又去调用自己本身。一种(y zhn)特殊的嵌套调用int int fun(int n)fun(int n)int c;int c;if(n=1)c=0
12、;if(n=1)c=0;else else c=n*c=n*fun(n-1)fun(n-1)return return c;c;第 19 页/共 86 页第二十页,共87 页。复习(fx)一个(y)函数的执行过程中,又去调用自己本身。一种(y zhn)特殊的嵌套调用int int fun(int n)fun(int n)int c;int c;if(n=1)c=0;if(n=1)c=0;else else c=n*c=n*fun(n-1)fun(n-1)return return c;c;第 20 页/共 86 页第二十一页,共87 页。7.6 函数(hnsh)的递归调用定义(dngy)函数执
13、行的过程中,直接或者间接的调用该函数本身(bnshn),称为函数的递归调用。包括:回溯和递推 两个过程 int fun(int n)z=n*fun(n-1);第 21 页/共 86 页第二十二页,共87 页。引例(yn l):了解递归问题的回溯和递归两个过程例7.6 有5 个学生(xu sheng),问第5 个学生(xu sheng)几岁,他说比第4 个学生(xu sheng)大2 岁。问第4 个学生(xu sheng)几岁,他说比第3 个学生(xu sheng)大2 岁。问第3 个学生(xu sheng)几岁,他说比第2 个学生(xu sheng)大2 岁。问第2 个学生(xu sheng)
14、几岁,他说比第1 个学生(xu sheng)大2 岁。问第1 个学生(xu sheng)几岁,他说自己10 岁。请问第5 个学生(xu sheng)几岁?假设此问题中,求年龄的函数为int age(int n)第 22 页/共 86 页第二十三页,共87 页。公式(gngsh)age(n)=10 n=1age(n-1)+2 n1第 23 页/共 86 页第二十四页,共87 页。公式(gngsh)age(n)=10 n=1age(n-1)+2 n1推导公式方法:1.一般第一次回溯,例如由age(5)=age(4)+2,之后再抽象成一般形式,就可推导出上述公式。2.添加(tin ji)结束条件,即
15、n=1 或0 时的值。第 24 页/共 86 页第二十五页,共87 页。公式(gngsh)age(n)=10 n=1age(n-1)+2 n1推导公式方法:1.一般(ybn)第一次回溯,例如由age(5)=age(4)+2,之后再抽象成一般(ybn)形式,就可推导出上述公式。2.添加结束条件,即n=1 或0 时的值。推导出公式是解决递归问题(wnt)的关键第 25 页/共 86 页第二十六页,共87 页。按照(nzho)公式书写程序公式(gngsh)左边函数首部 公式右边(yu bian)函数体age(n)=10 n=1age(n-1)+2 n1第 26 页/共 86 页第二十七页,共87 页
16、。int age(int n)if(n=1)return 10;else return age(n-1)+2;公式左边(zu bian)函数首部 公式右边(yu bian)函数体age(n)=10 n=1age(n-1)+2 n1按照公式(gngsh)书写程序第 27 页/共 86 页第二十八页,共87 页。int age(int n)if(n=1)return 10;else return age(n-1)+2;公式(gngsh)左边函数首部公式右边(yu bian)函数体age(n)=10 n=1age(n-1)+2 n1按照(nzho)公式书写程序注意:函数体中有函数自己第 28 页/共
17、 86 页第二十九页,共87 页。练习(linx)例7.7 用递归方法求n!1.验证此问题是否可使用(shyng)递归方法2.推导公式:(1)一般第一次回溯(2)添加结束条件,即n=1 或0 时的值。第 29 页/共 86 页第三十页,共87 页。3 层15 层64 层Hanoi(汉诺)塔问题(wnt)第 30 页/共 86 页第三十一页,共87 页。古典数学问题。古典数学问题。问题描述:古代有个一梵塔,塔内有三个座 问题描述:古代有个一梵塔,塔内有三个座A A、B B、C C,开,开始 始(kish(kish)时 时A A 座上有 座上有64 64 个盘子,盘子大小不等,大的在下,个盘子,盘
18、子大小不等,大的在下,小的在上。有一个老和尚想把这 小的在上。有一个老和尚想把这64 64 个盘子从 个盘子从A A 座移到 座移到C C 座,座,但规定每次只允许移动一个盘子,且在移动过程中,但规定每次只允许移动一个盘子,且在移动过程中,3 3 个座 个座上的盘子始终都是大的在下,小的在上。移动中可以利用 上的盘子始终都是大的在下,小的在上。移动中可以利用B B座。要求写出移动盘子的步骤。座。要求写出移动盘子的步骤。A B CHanoi 问题(wnt)原型64第 31 页/共 86 页第三十二页,共87 页。A B C第 32 页/共 86 页第三十三页,共87 页。A B C(1)先将2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汉诺塔 课件 学习 教案
限制150内