




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机程序设计,顾刚计算机教学实验中心,第8章函数与指针,递归函数定义与使用函数重载定义与使用指针和函数的关系带参数的main()函数,什么是递归函数,如果某个函数的函数体内有调用其自身的语句,则该函数称为递归函数intabc(floata,floatb,floatc)floatx,y,z;ints;s=abc(x,y,z);,递归函数运行现象,递归函数运行有两种现象:一种是永无休止地调用自身,形成永久运行的现象,如同“死循环”另一种是加以控制,使函数经过有限次数的调用,程序便停止运行,永无休止运行的递归函数,#include/递归函数永无休止的运行示例intdigui(inta,intb)/递归函数b=b+a;cout“递归函数输出b=:bendl;digui(a,b);/递归调用cout“递归函数输出a=:aendl;returnb;voidmain()intx,y;x=5;y=10;digui(x,y);/递归调用coutx=x;y=yendl;,有限次数地运行递归函数,#include/递归函数永无休止的运行示例intdigui(inta,intb)/递归函数b=b+a;cout递归函数输出b=:bendl;if(a=0)returnb;digui(a-1,b);/递归调用cout递归函数输出a=:aendl;returnb;voidmain()intx,y;x=5;y=10;digui(x,y);/递归调用coutx=x;y=yendl;,采用递归函数求n!,算法分析:由阶乘的概念可以写出其递归定义0!=1n!=n*(n-1)!程序:intfac(intn)if(n0)/不能求负数的阶乘return1;elseif(n=0)/0的阶乘为1return1;elsereturnn*fac(n-1);/n!为(n-1)!乘以n,#includeintfac(intn)if(n0)/不能求负数的阶乘return1;elseif(n=0)/0的阶乘为1return1;elsereturnn*fac(n-1);/n!为(n-1)!乘以nmian()coutfac(5)maximum)returnarraybegin;elsereturnmaximum;main()inta=19,33,69,55,77,12,52;coutthemaxismax_element(a,0,6)1时,就需要借助另外一个针来移动。将n片金片由A移到C上可以分解为以下几个步骤:(1)将A上的n1片金片借助C针移到B针上;(2)把A针上剩下的一片金片由A针移到C针上;(3)最后将剩下的n1个金片借助A针由B针移到C针上步骤(1)和(3)与整个任务类似,但涉及的金片只有n1个了。这是一个典型递归算法,#includeconstintN=3;/考察当金片数为3个时的情况voidmove(charfrom,charto)/函数move():将金片由一根针移到另一根针上coutFromfromtoto=0?x:-x;longabs(longx)returnx=0?x:-x;,#includeintmax_element(int*array,intbegin,intend)intmaximum;if(begin=end)returnarraybegin;elsemaximum=max_element(array,begin+1,end);if(arraybeginmaximum)returnarraybegin;elsereturnaximum;doublemax_element(doublearray,intbegin,intend)doublemaximum;if(begin=end)returnarraybegin;elsemaximum=max_element(array,begin+1,end);if(arraybeginmaximum)returnarraybegin;elsereturnmaximum;main()inta=19,33,69,55,77,12,52;doubleb=10.1,21.3,12.4,321.42,5.2,7.1,8.3,12.31,70.0;coutthemaxismax_element(a,0,6)endl;coutthemaxismax_element(b,0,8)*z)swap(x,z);if(*y*z)swap(y,z);main()intx1=2,y1=3,z1=1;coutBeginsorting,thelistis:endl;coutx1ty1tz1=1,指向函数的指针,任何函数在内存中存放都有首地址(第一字节地址)首地址是函数的入口地址。主函数在调用子函数时,就是让程序转移到函数的入口地址开始执行指向函数的指针:就是指针的值为该函数的入口地址指向函数的指针变量的说明格式为:(*)();int(*p)();/p为指向返回值为整型的函数的指针float(*q)(float,int);/q为指向返回值为浮点型函数的指针注意指针变量名前后的圆扩号不能少int*p();/与函数原型混淆,二义性float*q(float,int);/与函数原型混淆,二义性,通用数值积分函数,#include#includedoubleintegral(doublea,doubleb,double(*fun)(double),intn)doubleh=(b-a)/n;doublesum=(*fun)(a)+(*fun)(b)/2;inti;for(i=1;in;i+)sum+=(*fun)(a+i*h);sum*=h;returnsum;main()double(*fp)(double);fp=cos;coutintegral(0.0,1.0,sin,1000)endl;coutintegral(0.0,1.0,fp,1000)endl;return0;,带参数的main(),函数原型为:intmain(intargc,char*argv)第一个整型参数指明在以命令行方式执行本程序时所带的参数个数(包括程序名本身,故argc的值至少为1)第二个参数为一个字符型指针数组(其中第1个下标变量argv0指向本程序名,接下来的下标变量argv1,argv2.等分别指向命令行传递给程序的各个参数),用来存放命令行中命令字及各个参数的字符串,带参数的main函数的使用,/Example8-6:带参数的main函数的使用,假设文件名设为abc.cpp#includeintmain(i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑方案设计图步骤
- 2025-2030中国烫衣板市场竞争力分析及供需前景预判报告
- 社区小修小补活动方案策划
- 河南小型活动策划执行方案
- 别墅建筑插画配色方案设计
- 心理健康教育方案
- 创伤止血包扎方法试题及答案
- 2024年院感上半年工作总结2篇
- 妇幼保健工作的实施方案
- 材料科学领域科研人员聘用与技术攻关合同
- 军人常见心理问题
- 某大酒店弱电智能化系统清单报价
- 搅拌桩机使用说明书
- 2023年兴文县中医院康复医学与技术岗位招聘考试历年高频考点试题含答案解析
- GB/T 4852-2002压敏胶粘带初粘性试验方法(滚球法)
- 情绪压力管理-情绪压力管理课件
- 2023年太原市第二热力有限责任公司招聘笔试题库及答案解析
- DDI辅导员工迈向成功-辅导领导力系列
- 阿联酋法律体系
- 煤矿井筒装备安装方案
- 育苗基质选择标准课件
评论
0/150
提交评论