欢迎来到天天文库
浏览记录
ID:28071703
大小:172.10 KB
页数:8页
时间:2018-12-07
《实验8-函数(2)(1)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验8函数嵌套调用及函数重载与带默认参数值的函戣【实验目的】1:掌握函数嵌套的概念及嵌套中的相互调川关系。2:理解并掌握函数递归调用的方法,学会用递归调用的方法解决实际问题。3:了解A联函数,函数重载及带默认参数值的函数用法。二、实验内容-上机调试理解例1.编写函数求代数式的值。分析:本题采用函数嵌套来解决,在主函数中调用了sum求和函数,在sum函数中又调用了power函数求幂。源程序:#includeintsum(int);//函数原型声明,因为函数先被主函数main中调用使用,后定义其功能。
2、intpower(int);voidmain(){intn;n二5;cout«sum(n);//调用sum()函数,这里ri为实参,传值调用}intsum(intx)//函数定义,功能是求各数字的幂和,这里x为形参{inti,s=0;for(i=l;i〈=x;i++)s+=power(i);//循环5次,每次调用power()函数,这里i为power函数形参对应的实参,传值调用returns;//将最后累加求和的结果值作为函数值返回到main()主调函数}intpower(inty)//函数定义,功能是求各数字的幂,这里
3、y为形参{inti,p=l;for(i=l;i〈=y;i++)p*二y;returnp;//将每次的函数值返回到sum()函数例2.分别用用递归算法和非递归算法实现1!+2!+3!+…+n!非递归算法-源程序:分析.•求阶乘的函数需要一个整型形参,函数类型为double,由于在主函数中要求l!+2!+"*+n!,因此要循环调用该函数求累加和。#includedoublefa(intn);//函数原型说明voidmain(){intn;cin»n;doubles=0.0;for(inti=l;i〈=
4、n;i++)s+=fa(i);//在循环体多次中调用fa()函数,这里i为实参,传值调用cout〈entsandSettingsAd>inistratorDebugz.exe*66的阶乘为:8?3Pressanykeytocontinue^递归算法-源程序:知识点:递归函数又叫自调用函数,
5、其特点是在函数体内部直接或间接地自己调用自己。利用函数的递归调用,可将一个复杂问题分解为一个相对简单且可直接求解的子问题;然后将这个子问题的结果逐层进行回代求值,最终求得原来复杂问题的解。包括两个阶段:(1)递推阶段:将原问题不断分解成为新问题,逐渐从未知方向向己知方向推测,最终达到己知的条件,即递归结束条件。如:if(n==l)return1;(2)回归阶段:从己知条件出发,逐一求值回归,最后达到递推开始处,结束回归阶段。如:returnfac(n-l)*n;使用这种算法会使程序简洁明了,可读性好。这种算法也会増加运行
6、中的时间和空间的开销,因为它需要足够的内存存放中间结果。建议在内存小速度慢的机器上不使用这种方法。B谋堂练习-记莩本ITIPIB艾件(Z)灌错(E)格式査若(Y)帮助QI)
7、ttincludedoublefac(int)//函数原型申明uoidmain()doubles=8;for(inti=1;i<=18;i++)s+=fac(i);cout〈〈"初为:B,<8、if(n==B9、10、n==1)f=1;IIelsef=fac(n-1)*n:Ire11、turnf;}VLaLColi例3.编写两个名为add的重载函数,分别实现两个整数相加和和两实数相加的功能。知识点:所谓函数重载,就是赋予同一函数名但多个含义。具体地说,C++中允许在相同的作用域内,为了编程方便,以相同的名称定义几个不同函数的实现,只是处理对象(参数)不同。定义重载函数时,要求同名函数的参数表必须有差异,而对返回值的类型没有要求。重载函数的参数表差异可以是:要么参数的个数不同;要么至少有一个参数的类型不同。编译器便知道在什么情况下该调用哪个函数。源程序:#includeintad12、d(int,int);//函数原型说明doubleadd(double,double);voidmain(){intm,n;doublex,y;cin»m>>n;cout<〈”两整数和:”<>x»y;cout〈〈”两实数和:”«add(x,y)«endl;
8、if(n==B
9、
10、n==1)f=1;IIelsef=fac(n-1)*n:Ire
11、turnf;}VLaLColi例3.编写两个名为add的重载函数,分别实现两个整数相加和和两实数相加的功能。知识点:所谓函数重载,就是赋予同一函数名但多个含义。具体地说,C++中允许在相同的作用域内,为了编程方便,以相同的名称定义几个不同函数的实现,只是处理对象(参数)不同。定义重载函数时,要求同名函数的参数表必须有差异,而对返回值的类型没有要求。重载函数的参数表差异可以是:要么参数的个数不同;要么至少有一个参数的类型不同。编译器便知道在什么情况下该调用哪个函数。源程序:#includeintad
12、d(int,int);//函数原型说明doubleadd(double,double);voidmain(){intm,n;doublex,y;cin»m>>n;cout<〈”两整数和:”<>x»y;cout〈〈”两实数和:”«add(x,y)«endl;
此文档下载收益归作者所有