《分校第讲函数讲稿.ppt》由会员分享,可在线阅读,更多相关《分校第讲函数讲稿.ppt(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、分校课件第讲函数分校课件第讲函数第一页,讲稿共四十八页哦C C语言的函数语言的函数在在C语言中,语言中,函数函数(function)是构成程序的基本模块。是构成程序的基本模块。一个一个C程序由一个或多个函数组成,有且仅有一个主函数,程序由一个或多个函数组成,有且仅有一个主函数,即即main()函数。函数。每个函数完成一个相对独立且功能明确的任务。每个函数完成一个相对独立且功能明确的任务。由主函数调用其他函数,其他函数也可以互相调用。由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。同一个函数可以被一个或多个函数调用任意多次。函数函数mainfun_afu
2、n_bfun_cfun_cfun_dfun_efun_ffun_d第三页,讲稿共四十八页哦二二.用户自定义函数用户自定义函数1.函数分类(从函数的形式看)无参函数有参函数函数定义时无参数说明调用无参函数一般用来执行指定的一组操作主调函数不传送数据给被调函数函数定义时定义了一个或一个以上的参数调用时将要处理的数据传送给被调函数空函数定义时既无参数也无执行语句被调用时,不执行任何操作就立即返回 6.2 函数的定义函数的定义第四页,讲稿共四十八页哦C C语言的函数语言的函数C语言的函数有两大类:语言的函数有两大类:标准库函数标准库函数编译系统提供了丰富的函数。编译系统提供了丰富的函数。例如例如数学计
3、算:数学计算:sqrt(),abs()输入输入/输出:输出:scanf(),printf()自定义函数自定义函数程序员自己可以编写函数来完成特定的任务。程序员自己可以编写函数来完成特定的任务。应该熟悉应该熟悉C系统中的标准函数库。系统中的标准函数库。应该避免从零开始构建一切。应该避免从零开始构建一切。注意使用时要按规定的格式进行使用。注意使用时要按规定的格式进行使用。函数函数第五页,讲稿共四十八页哦为什么使用函数为什么使用函数函数使程序模块化。函数使程序模块化。程序采用模块化结构的好处:程序采用模块化结构的好处:分而治之分而治之提高程序开发的效率。改进性能。提高程序开发的效率。改进性能。使程序
4、易于管理和集中控制。使程序易于管理和集中控制。代码重用代码重用使用现有的函数作为构件来创建程序。使用现有的函数作为构件来创建程序。函数可以被重复使用。避免重复代码段降低了复杂性。函数可以被重复使用。避免重复代码段降低了复杂性。抽象抽象隐藏了实现的细节隐藏了实现的细节(数据结构数据结构,顺序、指针顺序、指针,全局变量全局变量)。进行参数传。进行参数传递。递。函数函数我们使用库函数(我们使用库函数(printf()),并不知道它的具体实现方法,却并不影响对他),并不知道它的具体实现方法,却并不影响对他的使用。的使用。例如例如第六页,讲稿共四十八页哦案例分析:一个简单的函数案例分析:一个简单的函数编
5、写和使用一个简单的函数编写和使用一个简单的函数(cw0801.c)定义一个函数定义一个函数square,用来计算任意整数的平方。,用来计算任意整数的平方。然后,使用该函数计算从然后,使用该函数计算从1到到10所有整数的平方。所有整数的平方。函数函数#include int square(int);int main()int x;for(x=1;x=10;x+)printf(%d,square(x);return 0;int square(int y)/定义平方函数定义平方函数 return y*y;声明函数声明函数使用函数使用函数1 4 9 16 25 36 49 64 81 100如果函数在
6、主调函数之后定义,则使用前必须先声明函数原形。第七页,讲稿共四十八页哦函数的定义函数的定义定义函数的格式定义函数的格式()函数名:一个有效的标识符。函数名:一个有效的标识符。函数类型:返回值的类型说明符。函数类型:返回值的类型说明符。如果不指定,即缺省,就是如果不指定,即缺省,就是 int。最好不省略。最好不省略。C99不允许省。不允许省。void:表示函数不返回任何值。不可省。:表示函数不返回任何值。不可省。参数表:声明参数,多个参数用逗号分隔。参数表:声明参数,多个参数用逗号分隔。接收传递进来的数据。接收传递进来的数据。必须为每个参数指定数据类型。必须为每个参数指定数据类型。int 可以省
7、略。但最好不要省略。可以省略。但最好不要省略。函数函数函数头函数头函数体函数体Void 能用在:能用在:1、对函数返回的限定对函数返回的限定;2、对函数参数的限定对函数参数的限定。3、指针的限定指针的限定第八页,讲稿共四十八页哦函数的定义函数的定义函数体:包括声明语句和可执行语句。函数体:包括声明语句和可执行语句。在函数体内可以定义变量。在函数体内可以定义变量。不能定义函数,即函数的定义不允许嵌套。不能定义函数,即函数的定义不允许嵌套。控制返回:结束执行,把程序的控制交还主调函数,控制返回:结束执行,把程序的控制交还主调函数,也可以用也可以用return返回一个数值。返回一个数值。return
8、;return;如:如:return(x y?x:y);函数函数无返回值,只返回控制权无返回值,只返回控制权有返回值有返回值如果函数无参数如果函数无参数,那么应声明其参数为那么应声明其参数为void:Int function(void)return 1;第九页,讲稿共四十八页哦案例分析:函数的定义案例分析:函数的定义函数的定义函数的定义(cw0802.c)定义函数找出三个数中的大数。定义函数找出三个数中的大数。函数函数#include int maximum(int x,int y,int z);int main()int a,b,c;printf(“input three integers:
9、);scanf(%d%d%d,&a,&b,&c);printf(“Maximum is:%dn”,maximum(a,b,c);return 0;int maximum(int x,int y,int z)int max=x;if(ymax)max=y;if(zmax)max=z;return max;maximumintintintint函数原型函数原型接口接口(interface)声明函数原形必须加;return(max)括号可省括号可省return(x y?x:y);第十页,讲稿共四十八页哦函数原型函数原型函数原型函数原型();用来对函数进行声明。用来对函数进行声明。编译器使用函数原型来
10、检查函数调用的合法性。编译器使用函数原型来检查函数调用的合法性。注意:函数原型要与函数的定义一致。注意:函数原型要与函数的定义一致。例如例如int maximum(int a,int b,int c);int maximum(int,int,int);函数函数在使用自定义函数时,除了进行定义之外,还要对被调用函数进行说明,在使用自定义函数时,除了进行定义之外,还要对被调用函数进行说明,说明函数类型、名称和参数类型,这称为函数原形。如果被调用函数在说明函数类型、名称和参数类型,这称为函数原形。如果被调用函数在调用函数之后定义调用函数之后定义,则必须先声明原形则必须先声明原形.第十一页,讲稿共四十
11、八页哦函数原型函数原型函数原型在程序文件中的位置不同,作用范围不同函数原型在程序文件中的位置不同,作用范围不同在所有函数的外面在所有函数的外面在调用函数内部在调用函数内部函数函数main()void funcA()int funcB(int);int funcB(int)函数原形在函数外声明,其作函数原形在函数外声明,其作用范围从声明处开始,至程序用范围从声明处开始,至程序结束。结束。在函数中声明,只能在函数中在函数中声明,只能在函数中起作用。起作用。第十二页,讲稿共四十八页哦函数原型函数原型如果程序中没有包含函数原型。如果程序中没有包含函数原型。编译程序会使用该函数第一次出现的情形来形成自己
12、的函编译程序会使用该函数第一次出现的情形来形成自己的函数原型。数原型。函数的定义在前函数的定义在前函数的调用在后函数的调用在后默认情况下,编译程序假定函数返回默认情况下,编译程序假定函数返回int型的结果,但不会型的结果,但不会对参数进行任何假定。对参数进行任何假定。如果传递给函数的参数不正确,编译程序不会检查到这些错误。如果传递给函数的参数不正确,编译程序不会检查到这些错误。函数函数不要省略返回值的类型,如果函数没有返回值,那么应声明为不要省略返回值的类型,如果函数没有返回值,那么应声明为void类型。类型。第十三页,讲稿共四十八页哦函数原型函数原型函数原型强迫参数采用正确的数据类型。函数原
13、型强迫参数采用正确的数据类型。举例举例printf(“%.3f”,sqrt(4);函数原型使编译程序把整数值函数原型使编译程序把整数值4转换为转换为double型的值型的值4.0没有与函数原型中的参数类型完全对应的参数值会在调用没有与函数原型中的参数类型完全对应的参数值会在调用函数之前被转换成合适的数据类型。函数之前被转换成合适的数据类型。遵守遵守C语言的提升规则。语言的提升规则。函数函数double sqrt(double);第十四页,讲稿共四十八页哦函数原型与头文件函数原型与头文件头文件头文件每个标准库函数都有对应的头文件。每个标准库函数都有对应的头文件。包含了标准库中所有函数的函数原型,
14、包含了标准库中所有函数的函数原型,以及那些函数所需的数据类型和常量的定义。以及那些函数所需的数据类型和常量的定义。使用使用#include命令把头文件包含到程序文件中:命令把头文件包含到程序文件中:#include 例如,例如,#include 程序员可以创建自己的头文件程序员可以创建自己的头文件使用使用.h扩展名。扩展名。使用下面的命令格式包含头文件:使用下面的命令格式包含头文件:#include“文件名文件名”例如,例如,#include“abc.h”函数函数尖括号指只在include文件夹下查找文件夹下查找引号指先在本程序所在先在本程序所在文件夹查找,再在include文件夹下查找文件夹
15、下查找第十五页,讲稿共四十八页哦形参形参形参形参函数函数int max(int a,int b)int c=a=b?a:b;return c;int main()int a,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);return 0;实参实参实参实参形式参数形式参数 简称简称“形参形参”。在。在定义被调函数时定义被调函数时定义,定义,表示可以接受传递过来的值。只能是表示可以接受传递过来的值。只能是变量形式。变量形式。v只有在函数被调用、启动后,才临时为只有在函数被调用、启动后,才临时为其分配存储单元,并接受主调函数传来的其分配存储单元,并接受主调函数传来的数据。数据
16、。v在函数调用结束后,形参所占存储单元在函数调用结束后,形参所占存储单元被释放被释放,即值不保留,即值不保留。实际参数:简称实际参数:简称“实参实参”。在。在函数调用时函数调用时给给出。出。v实参是函数调用时主调函数传送给实参是函数调用时主调函数传送给被调函数形参的实际值。被调函数形参的实际值。v实参可以是常量、变量和表达式实参可以是常量、变量和表达式v但实参必须有确定的值。但实参必须有确定的值。如有多个形参或者多个实参,参数之间用逗号分隔。不能用其他符号。如有多个形参或者多个实参,参数之间用逗号分隔。不能用其他符号。第十六页,讲稿共四十八页哦参数传递参数传递参数传递的顺序。参数传递的顺序。函
17、数函数int max(int a,int b)int c=a=b?a:b;printf(%d,%d,%dn,c,a,b);return c;int main()int x=6,y;y=max(x,x+);printf(“x=%d,y=%dn,x,y);return 0;v当实参表列中有多个实参时,对实参的求当实参表列中有多个实参时,对实参的求值顺序值顺序,C语言未规定。语言未规定。vVC和和BC是按从右往左的顺序求值。是按从右往左的顺序求值。b=x+;a=x;6,6,6X=7,y=6在参数传递时在参数传递时x=6,传递完成后才加传递完成后才加1b=+x;a=x;7,7,7X=7,y=7cw08
18、02_x.c如改为如改为在参数传递时在参数传递时x=7,传传递的递的a,b都为都为7第十七页,讲稿共四十八页哦参数传递参数传递参数传递的影响。参数传递的影响。函数函数int max(int a,int b)int c=a=b?a:b;a+;b+;printf(%d,%d,%dn,a,b,c);return c;int main()int a=6,b=5,c;c=max(a,b);printf(“%d,%d,%d”,a,b,c);return 0;v实参与形参不共用存储单元。实参与形参不共用存储单元。v参数传递时,把实参的值复制一份给形参数传递时,把实参的值复制一份给形参。参。v形参值的变化不影
19、响实参的值。形参值的变化不影响实参的值。v所以,形参和实参可以同名。所以,形参和实参可以同名。max6a5b7a6bmaincw0802_y.c而返回值而返回值总是总是67,6,66,5,6主函数main中函数max中第十八页,讲稿共四十八页哦值传递和引用传递值传递和引用传递函数间参数的传递有两种类型:函数间参数的传递有两种类型:值传递值传递主调函数把实参的值的副本传递给被调函数的形参。主调函数把实参的值的副本传递给被调函数的形参。在被调函数内改变形参的值不会改变主调函数中实参的值。在被调函数内改变形参的值不会改变主调函数中实参的值。如果函数不需要修改参数的值,就采用这种调用方式。如果函数不需
20、要修改参数的值,就采用这种调用方式。引用传递引用传递主调主调函数函数把实参把实参“自身自身”传递给被调函数的形参。传递给被调函数的形参。在被调函数内改变形参的值将改变主调函数中实参的值。在被调函数内改变形参的值将改变主调函数中实参的值。用于可信的函数。用于可信的函数。函数函数但但C语言的数组名作为参数传递时,则是传址,此时在被调函数内形参变化将影响实语言的数组名作为参数传递时,则是传址,此时在被调函数内形参变化将影响实参值。这将在数组章中讲授。在指针一章中讲指针传递。参值。这将在数组章中讲授。在指针一章中讲指针传递。第十九页,讲稿共四十八页哦参数传递参数传递实参和形参的类型应该相同或赋值兼容。
21、实参和形参的类型应该相同或赋值兼容。(cw0803.c)定义函数找出二个数定义函数找出二个数(字符字符)中的大数。中的大数。函数函数int max(int a,int b)int c=a=b?a:b;return c;int main()int x=6,y=5,z;z=max(x,y);printf(“%d”,z);return 0;如果如果x,y是整型,则结果正确;是整型,则结果正确;如果如果x,y是字符型,则自动进行类型转换,是字符型,则自动进行类型转换,结果正确;结果正确;如果如果x,y是短整型,则自动进行类型转换,结是短整型,则自动进行类型转换,结果正确;果正确;如果如果x或或y是实数
22、,则自动进行类型转换,是实数,则自动进行类型转换,有数据丢失,结果可能不正确。有数据丢失,结果可能不正确。b=y;a=x;即即b=5 a=6在参数传递时在参数传递时第二十页,讲稿共四十八页哦函数的返回值函数的返回值函数返回值的类型应该与函数的类型一致。函数返回值的类型应该与函数的类型一致。如果不一致,采用函数的类型,对返回值进行类型转换。如果不一致,采用函数的类型,对返回值进行类型转换。函数函数#include int max(float a,float b)float c=a=b?a:b;printf(c=%fn,c);return c;int main()float x=6.5,y=5.6
23、,z;z=2*max(x,y);printf(“z=%f”,z);return 0;c 的类型?的类型?返回值的类型?返回值的类型?max(x,y)的类型?的类型?Z=2*max(x,y)的类型?的类型?(cw0803-x.c)注意注意:被调用函数如果在主函数的后面被调用函数如果在主函数的后面,则结则结果不正确果不正确,因为未说明函数原形因为未说明函数原形,必须加一语必须加一语句函数原形声明句函数原形声明:int max(float a,float b);C=6.500000Z=12.00000第二十一页,讲稿共四十八页哦函数的嵌套调用函数的嵌套调用嵌套调用嵌套调用在调用一个函数的过程中又调用
24、另一个函数在调用一个函数的过程中又调用另一个函数函数函数主函数主函数调用函数调用函数 1函数函数 1调用函数调用函数 2函数函数 2123456789第二十二页,讲稿共四十八页哦案例分析:函数的嵌套调用案例分析:函数的嵌套调用计算圆环的面积计算圆环的面积分析分析圆环的面积圆环的面积=外圆的面积外圆的面积 内圆的面积内圆的面积可以定义两个函数可以定义两个函数circleArea 计算圆的面积计算圆的面积ringArea 计算圆环的面积计算圆环的面积函数函数r1r2circleAreadoubledoubleringAreadoubledoubledoubledouble circleArea(d
25、ouble r);double ringArea(double r1,double r2);第二十三页,讲稿共四十八页哦案例分析:函数的嵌套调用案例分析:函数的嵌套调用计算圆环的面积计算圆环的面积源代码源代码(cw0804.c)函数函数#include#define PI 3.14double circleArea(double r);double ringArea(double r1,double r2);int main()double r1,r2,s;printf(t input r1,r2:);scanf(%lf%lf,&r1,&r2);s=ringArea(r1,r2);printf
26、(ntThe area is:%.2lfn,s);return 0;第二十四页,讲稿共四十八页哦案例分析:函数的嵌套调用案例分析:函数的嵌套调用计算圆环的面积计算圆环的面积源代码源代码(续)(续)函数函数double circleArea(double r)return PI*r*r;double ringArea(double r1,double r2)if(r11)基本情形基本情形简化问题简化问题s=1;n=1;while(n=20)s=n*s;迭代迭代n!=n*(n-1)!第二十七页,讲稿共四十八页哦案例分析:递归函数案例分析:递归函数举例:用递归方法计算举例:用递归方法计算n!。函数函
27、数/*用递归方法计算用递归方法计算n!(cw0805.c)*/#include long fac(int n)long s;/声明长整变量声明长整变量f if(n=0|n=1)s=1;else s=n*fac(n-1);/反复自调用反复自调用fac并输出并输出 printf(t%d!=%ldn,n,s);return s;int main()printf(nt5!=%ldn,fac(5);return 0;1!=12!=23!=64!=245!=1205!=120递归调用递归调用源代码源代码(cw0805.c)第二十八页,讲稿共四十八页哦案例分析:递归函数案例分析:递归函数举例:用递归方法计算
28、举例:用递归方法计算n!。分析分析函数函数5!5*4!4*3!3*2!2*1!11205*244*63*22*11递归调用递归调用从递归调用返回值从递归调用返回值第二十九页,讲稿共四十八页哦/求求1!1!2!2!3!3!4!4!.20!20!#include float sum(int);float fac(int);int main()float sum(int);float add;add=sum(20);printf(add=%e,add);return 0;float sum(int n)float fac(int);int i;float s=0;for(i=1;i=n;i+)s+=
29、fac(i);return s;float fac(int i)float t=1;int n=1;do t=t*n;n+;while(n1时时)fib(0)=0fib(1)=1函数函数写成递归函数有:写成递归函数有:int fib(int n)if(n=0)return 0;if(n=1)return 1;if(n1)return fib(n-1)+fib(n-2);注意编程时计项数是从第注意编程时计项数是从第0项开始计数项开始计数,第第4、5、6项为项为3、5、8#include int main(void)int n;printf(inpit n=?);scanf(%d,&n);/for
30、(n=0;n9;n+)printf(第%d项为%dn,n,fib(n);return 0;(cw0807fib.c)第三十二页,讲稿共四十八页哦#include#include int main()float a,x1,x2;scanf(%f,&a);x1=1;x2=a;while(fabs(x1-x2)=1e-5)x1=x2;x2=(x1+a/x1)/2;printf(%f,%f,x1,x2);return 0;/*求平方根的迭代公式为求平方根的迭代公式为Xn+1=1/2(Xn+a/Xn);要求前后两次求出的要求前后两次求出的x的差的绝对值小于的差的绝对值小于1e-5;*/用迭代法求用迭代法
31、求a a的平方根的平方根利用迭代算法解决问题,需要做好以下三个利用迭代算法解决问题,需要做好以下三个方面的工作:方面的工作:一、确定迭代变量。至少存在一个直接或一、确定迭代变量。至少存在一个直接或间接地不断由旧值递推出新值的变量,这间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。个变量就是迭代变量。二、建立迭代关系式。如何从变量的前一二、建立迭代关系式。如何从变量的前一个值推出其下一个值的公式(或关系)。个值推出其下一个值的公式(或关系)。这是建立迭代问题的关键,通常可以使用这是建立迭代问题的关键,通常可以使用递推或倒推的方法来完成。递推或倒推的方法来完成。三、对迭代过程进行控制。在什
32、么时候结束三、对迭代过程进行控制。在什么时候结束迭代过程?迭代过程?(cw0806x.c)x1=1,a,(1+a)/2,Sqrt(5)=2.236067977x2=a,(1+a)/2,(1+a)/2+a/(1+a)/2)/2,1,5,3,2.3333,2.23815,3,(3+5/3)/2=2.3333,(2.3333+5/2.3333)/2=2.2381,(2.2381+5/2.2381)/2=2.23606889第三十三页,讲稿共四十八页哦递归与迭代递归与迭代递归与迭代的比较递归与迭代的比较循环循环迭代:明确使用了循环结构迭代:明确使用了循环结构递归:重复调用递归函数递归:重复调用递归函数
33、终止条件终止条件迭代:循环条件不满足迭代:循环条件不满足递归:遇到基本情形递归:遇到基本情形都有可能出现无限循环都有可能出现无限循环如何选择如何选择迭代:性能好迭代:性能好递归:可读性好递归:可读性好函数函数迭代迭代递归递归迭代和递归各基于一种控制结构,迭代和递归各基于一种控制结构,都涉及到循环,都可无限进行都涉及到循环,都可无限进行是循环求值是循环求值是调用本身是调用本身使用循环结构使用循环结构使用选择结构使用选择结构当循环条件不当循环条件不满足时终止满足时终止当满足基本条件时当满足基本条件时终止终止用计数器控制用计数器控制循环,不停地循环,不停地修改计数器的修改计数器的值,直到不满值,直到
34、不满足条件为止足条件为止逐渐逼近基本条件逐渐逼近基本条件而终止,不断地对而终止,不断地对问题进行简化直到问题进行简化直到可以直接计算基本可以直接计算基本问题为止问题为止包含多个源文件的程序放到包含多个源文件的程序放到下一次再讲下一次再讲第三十四页,讲稿共四十八页哦编辑函数要注意的事项编辑函数要注意的事项每一个函数都必须有注释,即使函数短到可能只有每一个函数都必须有注释,即使函数短到可能只有几行。几行。每个函数定义结束之后以及每个文件结束之后都要每个函数定义结束之后以及每个文件结束之后都要加一个或若干个空行。加一个或若干个空行。在一个函数体内,变量定义与函数语句之间要加空在一个函数体内,变量定义
35、与函数语句之间要加空行。行。复杂的函数中,在分支语句,循环语句结束之后需复杂的函数中,在分支语句,循环语句结束之后需要适当的注释,方便区分各分支或循环体。要适当的注释,方便区分各分支或循环体。如果函数中的参数较长,则要进行适当的划分。如果函数中的参数较长,则要进行适当的划分。用正确的反义词组命名具有互斥意义的变量或相反用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。如:动作的函数等。如:min(),max()第三十五页,讲稿共四十八页哦参数的书写要完整,不要贪图省事只写参数的类型而参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果函数没有参数则用省略参数名字。如果函数没
36、有参数则用void填充。填充。不要省略返回值的类型,如果函数没有返回值,那么不要省略返回值的类型,如果函数没有返回值,那么应声明为应声明为void类型。类型。函数的功能要单一,不要设计多用途的函数。函数的功能要单一,不要设计多用途的函数。函数体的规模要小,尽量控制在函数体的规模要小,尽量控制在80行代码之内。行代码之内。相同的输入应当产生相同的输出。尽量避免函数带有相同的输入应当产生相同的输出。尽量避免函数带有“记忆记忆”功能。建议尽量少用功能。建议尽量少用static局部变量,除非局部变量,除非必需。必需。避免函数有太多的参数,参数个数尽量控制在避免函数有太多的参数,参数个数尽量控制在4个或
37、个或4个以内。个以内。函数名与返回值类型在语义上不可冲突。函数名与返回值类型在语义上不可冲突。编辑函数要注意的事项编辑函数要注意的事项(续续)第三十六页,讲稿共四十八页哦小结小结函数可以作为大型程序的组成模块。函数可以作为大型程序的组成模块。每个函数应该实现某个明确的功能。每个函数应该实现某个明确的功能。使用参数可以向函数传递数据,通过使用参数可以向函数传递数据,通过return让函让函数返回一个数据。数返回一个数据。使用函数原型声明函数,以便编译器检查函数调使用函数原型声明函数,以便编译器检查函数调用时所传递的参数个数及类型是否正确。用时所传递的参数个数及类型是否正确。函数可以调用自身,这种
38、调用方式称为递归。有函数可以调用自身,这种调用方式称为递归。有些问题使用递归解决方案,但是递归会在内存使些问题使用递归解决方案,但是递归会在内存使用和时间花费方面效率低下。用和时间花费方面效率低下。函数函数const修饰符也可以修饰函数的返回值,返回值不可被改变。例如:修饰符也可以修饰函数的返回值,返回值不可被改变。例如:Const int Fun(void);第三十七页,讲稿共四十八页哦请请请请自自自自学学学学本本本本章章章章教教教教材材材材内内内内容容容容并并并并预预预预习习习习下下下下一一一一章章章章的的的的内内内内容容容容与与与与实实实实验验验验请请请请自自自自己己己己做做做做本本本本章章章章的的的的习习习习题题题题与与与与实实实实验验验验体体体体验验验验本章到此结束,谢谢您的光临!本章到此结束,谢谢您的光临!THANK YOU VERY MUCH!第三十八页,讲稿共四十八页哦