C++程序设计教程与实验指导 -杨国兴 第3章 函数.ppt

C++程序设计教程与实验指导 -杨国兴 第3章 函数.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++语言程序设计 杨国兴 张东玲 彭涛 第3章 函数 3.1 函数的递归调用 3.2 内联函数 3.3 函数重载 3.4 带默认参数值的函数 3.5 变量的存储类别 3.6 程序实例 3.1 函数的递归调用 一个函数在它的函数体内,直接或间接地调用它自身,称为递归调用。这种函数称为递归函数。 直接或间接调用函数自身的情况如图: 例3.1 用递归的方法求 n! 分析:计算n!的公式为: 1 n =1或 0 y = n*(n-1)! n 1 可以将求n!转化为求(n-1)!,再继续转化为求(n-2)!,到1时应停止递归 #include iostream using namespace std; long power(int n); void main() { ?????? int n; ?????? long y; ?????? cout input a integer number:; ?????? cin n; ?????? y=power(n); ?????? cout n !=? y endl; } 例3.1的递归过程分析 例3.2 Hanoi塔问题 有三根针A、B、C,A针上有n个盘子,盘子大小不等,大的在下,小的在上,如图所示。要求将这n个盘子从A针移到C针,在移动过程中可以借助B针,每次只能移动一个盘子,并且在移动过程中三根针上的盘子都保持大盘在下,小盘在上。 分析:将n个盘子从A针移到C针可以分解为以下三个步骤: (1)将A针上的n-1个盘子借助C针移到B针上; (2)将A针上剩下的一个盘子移到C针上; (3)将B针上的n-1个盘子借助A针移到C针上。 例3.2 Hanoi塔问题源程序 #include iostream using namespace std; void Move(char x,? char y); void Hanoi(int n, char one, char two, char three); void main() { ?????? int n; ?????? cout 请输入盘子数:; ?????? cin n; ?????? cout n 个盘子的移动过程为: endl; ?????? Hanoi(n, A, B, C); } //函数Move()将一个盘子从x针移到y针 void Move(char x,? char y) { ?????? cout x -- y endl; } 例3.2 Hanoi塔问题源程序(续) //函数Hanoi()将n-1个盘子从one针借助two针移到three针 void Hanoi(int n, char one, char two, char three) { ?????? if(n==1) ????????????? Move(one, three); ?????? else ?????? { ????????????? Hanoi(n-1, one, three, two); ????????????? Move(one, three); ????????????? Hanoi(n-1, two, one, three); ?????? } } 3.2 内联函数 内联函数与一般函数的区别在于它不是在调用时发生控制转移,而是在编译时将被调函数体嵌入到每一个函数调用处,节省了参数传递、控制转移等开销。对于一些规模较小、频繁调用的函数可声明为内联函数,能提高程序运行效率。 内联函数的定义: inline 类型说明符 函数名(参数及类型表) { 函数体 } 注意:只有简单的函数才能成为内联函数,如函数体中不能有循环语句和switch语句等。 内联函数的定义必须出现在内联函数第一次被调用之前。 例3.3 使用内联函数 #include iostream using namespace std; inline int Add(int a, int b) { int x; x = a+b; return x; } 3.3 函数重载 在C++中可以定义多个相同名字的函数,只要它们形参的个数或类型不完全一致即可,编译程序根据实参与

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档