- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chap6函数
6.11编译预处理 1、无参宏定义 #define PI 3.14 float c,area; void f(float r) { c=2*PI*r; area=PI*r*r; } main() { float r; printf(“input radius:”); scanf(“%f”,r); f(r); printf(“%f,%f\n”,c,area); } 6.11编译预处理 2、带参宏定义 #define L(x) x+x //注意有无括号的区别 main() { float a,b; printf(“input a:”); scanf(“%f”,a); b=2* L(a) printf(“%f,%f\n”,a,b); } 本章重点 1、熟练掌握函数定义的语法结构。 2、熟练掌握函数的调用方法,并理解函数调用时程序的运行过程。 3、掌握递归函数的概念及设计技巧,掌握一定的递归算法设计能力。 4、理解变量作用域的概念,掌握全局变量与局部变量的特点,并能正确、灵活使用局部变量与全局变量。 5、理解变量存储结构的概念,掌握各种类型变量的特点和使用范围,并能够灵活运用。 * * * 设计递归算法的方法 前提: 原问题可以层层分解为类似的子问题,且子问题比原问题规模更小 规模最小的问题具有直接解 方法: 寻找分解方法:将原问题转化为子问题求解,例:n!=n*(n-1)! 设计递归出口:根据规模最小的子问题确定递归终止条件,例:求解n! ,当n=0时,n!=1; 例:汉诺塔问题。设有三座塔座(A、B、C),在一个塔座(设为A)上有64个盘片,盘片不等,按大盘在下,小盘在上的顺序依次叠放。现要将A塔上的盘片借助于B塔,移到C塔上并保持同样顺序叠排,移动盘片时必须遵守以下规则: (1)每次只能移动一个圆盘; (2)圆盘可以插在A、B、C任意一个塔座上; (3)任何时候都不能将一个较大的圆盘放到 较小的圆盘之上。 将A塔上的红、黄两盘移动到B上 蓝盘放到C上 将红、黄两盘从B移动到C盘上。(完成) A B C 问题分析: (1)n=1时,直接将其从A-C; (2)n1时,只要先将前n-1个借助C从A-B,那么可以 把第n个直接从A-C; (3)如何将剩下的n-1个圆盘遵守规则借助A从B-C, 问题性质同(2); 问题性质相同,因此适合采用递归过程! 若将n个盘片按规定从A塔移至C塔,移动步骤可分为三步: 把A塔上的n-1个盘片借助C移动到B塔 把第n个盘片从A塔移至C塔 把B塔上的n-1个盘片借助A塔移至C塔 算法用函数hanoi(n,x,y,z)以递归算法实现 盘片数 源塔 借用塔 目标塔 递归终止:当递归调用到盘片数为1时 算法描述: 1)递归调用hanoi(n-1,a,c,b); 2)将n号盘片从a塔移动到c塔; 3)递归调用hanoi(n-1,b,a,c)。 void hanoi(int n,char x,char y,char z) { if(n==1) printf(%c--%c\n,x,z); /* 编号为1的圆盘从x移到z*/ else { hanoi(n-1,x,z,y); /* 将x上编号为1至n-1的圆盘移到y, z作辅助塔*/ printf(%c--%c\n,x,z); /* 将编号为n的圆盘从x移到z*/ hanoi(n-1,y,x,z); /*将y上编号为1至n-1的圆盘移到z, x作辅助塔*/ } } main( ) { int m; printf(Input the number of disks:); scanf(%d,m); printf(he steps to moving %3d disks:\n,m); hanoi(m,A,B,C); } 6.8 变量的作用域 问题:一个变量在程序的哪个函数中都能使用吗? 按作用域划分:将变量分为局部变量和全局变量 局部变量 定义:在函数内部定义的变量或复合语句内定义的变量 作用域:限于定义它的函数或复合语句 任意一个函数都不能访问其它函数中定义的局部变量 说明: 主函数中定义的变量也属于局部变量,其作用范围仅限于主函数内,所有其它被调函数并不能使
您可能关注的文档
- ch6_3(夹紧机构).ppt
- 全班最优秀的ppt.ppt
- Lesson8线程.ppt
- 电工学简明教程第8章电工测量.ppt
- libcurl使用.docx
- 全矿停电检修及反风演习通风方面安全技术措施2016.doc
- LINGO系统主菜单.ppt
- 电工学例题集.ppt
- ch7simulink仿真.ppt
- CH3-文字处理软件.ppt
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
文档评论(0)