第3章C程序设计教程与实验指导杨国兴函数.ppt
《第3章C程序设计教程与实验指导杨国兴函数.ppt》由会员分享,可在线阅读,更多相关《第3章C程序设计教程与实验指导杨国兴函数.ppt(29页珍藏版)》请在三一办公上搜索。
1、C+语言程序设计,杨国兴 张东玲 彭涛,中国水利水电出版社,第3章 函数,3.1 函数的递归调用 3.2 内联函数3.3 函数重载3.4 带默认参数值的函数3.5 变量的存储类别3.6 程序实例,3.1 函数的递归调用,一个函数在它的函数体内,直接或间接地调用它自身,称为递归调用。这种函数称为递归函数。直接或间接调用函数自身的情况如图:,第3章 函数,直接调用,间接调用,这两种递归调用都是无中止地调用自身,显然是不正确的。为了防止递归调用无终止地进行,必须在函数内有终止递归调用的手段。,例3.1 用递归的方法求 n!,分析:计算n!的公式为:1 n=1或 0 y=n*(n-1)!n 1 可以将
2、求n!转化为求(n-1)!,再继续转化为求(n-2)!,到1时应停止递归#include using namespace std;long power(int n);void main()int n;long y;cout n;y=power(n);cout n!=y endl;,第3章 函数,long power(int n)long f;if(n1)f=n*power(n-1);else f=1;return f;,例3.1的递归过程分析,第3章 函数,例3.2 Hanoi塔问题,有三根针A、B、C,A针上有n个盘子,盘子大小不等,大的在下,小的在上,如图所示。要求将这n个盘子从A针移到C
3、针,在移动过程中可以借助B针,每次只能移动一个盘子,并且在移动过程中三根针上的盘子都保持大盘在下,小盘在上。分析:将n个盘子从A针移到C针可以分解为以下三个步骤:(1)将A针上的n-1个盘子借助C针移到B针上;(2)将A针上剩下的一个盘子移到C针上;(3)将B针上的n-1个盘子借助A针移到C针上。,第3章 函数,A,B,C,例3.2 Hanoi塔问题源程序,#include using namespace std;void Move(char x,char y);void Hanoi(int n,char one,char two,char three);void main()int n;co
4、ut n;cout y endl;,第3章 函数,例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章 函数,程序运行结果:ACABCBACBABCAC,运行演示,3.2 内联函数,内联函数与一般函数的区别在于它不是在调用时发生控制转移,而是在编译时将
5、被调函数体嵌入到每一个函数调用处,节省了参数传递、控制转移等开销。对于一些规模较小、频繁调用的函数可声明为内联函数,能提高程序运行效率。内联函数的定义:inline 类型说明符 函数名(参数及类型表)函数体 注意:只有简单的函数才能成为内联函数,如函数体中不能有循环语句和switch语句等。内联函数的定义必须出现在内联函数第一次被调用之前。,第3章 函数,例3.3 使用内联函数,#include using namespace std;inline int Add(int a,int b)int x;x=a+b;return x;,第3章 函数,程序运行结果:10+20=3010+50=605
6、0+50=100,void main()int a,b,c;a=10;b=20;c=Add(a,b);cout a+b=c endl;c=Add(a,50);cout a+50=c endl;c=Add(50,50);cout 50+50=c endl;,3.3 函数重载,在C+中可以定义多个相同名字的函数,只要它们形参的个数或类型不完全一致即可,编译程序根据实参与形参的类型及个数自动确定调用哪一个同名函数,这就是函数重载,这些同名函数称为重载函数。例3.4 定义两个函数,分别求两个整数及两个实数的最大值。分析:在C语言中,要定义题中的函数,只能使用两个不同名函数实现,即定义 int max1
7、(int x,int y)double max2(double x,double y)在C+中,可通过定义两个重载函数实现,二者同名,如下:int max(int x,int y)double max(double x,double y),第3章 函数,例3.5 源程序,#include using namespace std;int max(int x,int y);double max(double x,double y);void main()int a=10,b=20,c;double x=200.3,y=400.6,z;c=max(a,b);z=max(x,y);cout c z e
8、ndl;,第3章 函数,程序运行结果:int functionfloat function20,400.6,int max(int x,int y)cout y)return x;else return y;double max(double x,double y)cout y)return x;else return y;,3.4 带默认参数值的函数,3.4.1 带默认参数值的函数 在函数的声明或定义中可以预先给出默认的形参值,函数调用时,按从左到右的次序将实参和形参结合,如给出对应的实参,则采用实参值,否则采用预先给出的默认形参值。例3.6 使用带默认参数值的函数求x的n次方(n是正整数)
9、。,第3章 函数,#include using namespace std;double power(double x=10.0,int n=2);void main()cout power(3,5)endl;cout power(3)endl;cout power()endl;,double power(double x,int n)int i;double s=1.0;for(i=1;i=n;i+)s*=x;return s;,3.4 带默认参数值的函数,3.4.1 带默认参数值的函数(续)注意:默认形参值必须由右向左的顺序定义。如果某个参数有默认值,则其右面的参数必须都有默认值;如果某个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 教程 实验 指导 杨国兴 函数

链接地址:https://www.31ppt.com/p-5778424.html