欢迎来到天天文库
浏览记录
ID:26884471
大小:250.00 KB
页数:29页
时间:2018-11-29
《c程序设计教程与实验指导杨国兴函数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++语言程序设计杨国兴张东玲彭涛中国水利水电出版社第3章函数3.1函数的递归调用3.2内联函数3.3函数重载3.4带默认参数值的函数3.5变量的存储类别3.6程序实例3.1函数的递归调用一个函数在它的函数体内,直接或间接地调用它自身,称为递归调用。这种函数称为递归函数。直接或间接调用函数自身的情况如图:第3章函数f函数调用f函数f1函数调用f2函数f2函数调用f1函数直接调用间接调用这两种递归调用都是无中止地调用自身,显然是不正确的。为了防止递归调用无终止地进行,必须在函数内有终止递归调用的手段。例3.1用递归的方法求n!分析:计算n!的公式为:1n=1或0y=n*(n-1)!n>1可以将
2、求n!转化为求(n-1)!,再继续转化为求(n-2)!,到1时应停止递归#includeusingnamespacestd;longpower(intn);voidmain(){intn;longy;cout<<"inputaintegernumber:";cin>>n;y=power(n);cout<1)f=n*power(n-1);elsef=1;returnf;}例3.1的递归过程分析第3章函数例3.2Hanoi塔问题有三根针A、B、C,A针上有n个盘子,盘子大小
3、不等,大的在下,小的在上,如图所示。要求将这n个盘子从A针移到C针,在移动过程中可以借助B针,每次只能移动一个盘子,并且在移动过程中三根针上的盘子都保持大盘在下,小盘在上。分析:将n个盘子从A针移到C针可以分解为以下三个步骤:(1)将A针上的n-1个盘子借助C针移到B针上;(2)将A针上剩下的一个盘子移到C针上;(3)将B针上的n-1个盘子借助A针移到C针上。第3章函数ABCn-1个盘子的Hanoi问题例3.2Hanoi塔问题源程序#includeusingnamespacestd;voidMove(charx, chary);voidHanoi(intn,charone
4、,chartwo,charthree);voidmain(){intn;cout<<"请输入盘子数:";cin>>n;cout<"<5、hree);else{Hanoi(n-1,one,three,two);Move(one,three);Hanoi(n-1,two,one,three);}}第3章函数程序运行结果:ACABCBACBABCAC返回运行演示3.2内联函数内联函数与一般函数的区别在于它不是在调用时发生控制转移,而是在编译时将被调函数体嵌入到每一个函数调用处,节省了参数传递、控制转移等开销。对于一些规模较小、频繁调用的函数可声明为内联函数,能提高程序运行效率。内联函数的定义:inline类型说明符函数名(参数及类型表){函数体}注意:只有简单的函数才能成为内联函数,如函数体中不能有循环语句和swit6、ch语句等。内联函数的定义必须出现在内联函数第一次被调用之前。第3章函数例3.3使用内联函数#includeusingnamespacestd;inlineintAdd(inta,intb){intx;x=a+b;returnx;}第3章函数程序运行结果:10+20=3010+50=6050+50=100返回voidmain(){inta,b,c;a=10;b=20;c=Add(a,b);cout<7、+50"<<"="<
5、hree);else{Hanoi(n-1,one,three,two);Move(one,three);Hanoi(n-1,two,one,three);}}第3章函数程序运行结果:ACABCBACBABCAC返回运行演示3.2内联函数内联函数与一般函数的区别在于它不是在调用时发生控制转移,而是在编译时将被调函数体嵌入到每一个函数调用处,节省了参数传递、控制转移等开销。对于一些规模较小、频繁调用的函数可声明为内联函数,能提高程序运行效率。内联函数的定义:inline类型说明符函数名(参数及类型表){函数体}注意:只有简单的函数才能成为内联函数,如函数体中不能有循环语句和swit
6、ch语句等。内联函数的定义必须出现在内联函数第一次被调用之前。第3章函数例3.3使用内联函数#includeusingnamespacestd;inlineintAdd(inta,intb){intx;x=a+b;returnx;}第3章函数程序运行结果:10+20=3010+50=6050+50=100返回voidmain(){inta,b,c;a=10;b=20;c=Add(a,b);cout<7、+50"<<"="<
7、+50"<<"="<
此文档下载收益归作者所有