欢迎来到天天文库
浏览记录
ID:36321632
大小:212.50 KB
页数:30页
时间:2019-05-09
《c8函数嵌套递归变量作用域存储类别》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八讲主讲内容:第四章函数4.4函数的嵌套调用与递归调用4.5变量的作用域4.6变量的存储类别4.7内部函数与外部函数1教学安排【教学目的】1、函数的嵌套调用和递归调用,基本理解函数递归调用。2、掌握局部变量的概念和作用域,全局变量的概念和作用域;3、掌握变量的存储方式和存储类别4、基本掌握内部函数与外部函数的概念、定义和使用。【教学重点】函数的嵌套调用和递归调用;局部变量及全局变量的概念和作用域;变量的存储方式;变量的存储类别。【教学难点】递归调用,全局变量,静态变量。【教学时数】2学时。24.
2、4函数的嵌套调用与递归调用4.4.1函数的嵌套调用函数的嵌套调用是指,在执行被调用函数时,被调用函数又调用了其它函数。34.4.1函数的嵌套调用【例4.3】求两个正整数的最小公倍数。分析:设两个整数分别为m和n,根据最小公倍数的数学定义,m和n的最小公倍数=(m*n)/(m和n的最大公约数)。m和n的最大公约数可用辗转相除法求得。因此,我们可以用一个函数求最大公约数,用另一函数根据求出的最大公约数求最小公倍数。4#include#includeintdivisor
3、(intm,intn);intmultiple(intm,intn);voidmain(){intm,n,result;printf("inputmn:");scanf("%d%d",&m,&n);result=multiple(m,n);printf("theresult=%d",result);}intmultiple(intm,intn)/*根据求出的最大公约数求最小公倍数的函数*/{inttemp;temp=m*n/divisor(m,n);return(temp);}intdivis
4、or(intm,intn)/*求最大公约数的函数*/{inttemp;if(m5、行,必须在函数内有终止递归调用的手段。常用的办法是加条件判断,满足某种条件后就不再作递归调用,然后逐层返回。函数递归调用的说明7函数的递归调用举例合理的递归调用应该是有限的,是在一定条件下能终止的递归调用,即要有递归终止条件。【例4.4】用递归法求n!。n由用户输入,且满足0≤n≤16。8#includelongfac(intn);voidmain(){intn;longresult;printf("inputainteagernumber(0<=n<=16):");scanf(6、"%d",&n);result=fac(n);printf("%d!=%ld",n,result);}longfac(intn)/*递归函数,求n!*/{longtemp;if(n<07、8、n>16)printf("n<0,inputerror!");elseif(n==09、10、n==1)temp=1;/*递归终止条件*/elsetemp=fac(n-1)*n;/*递归调用*/return(temp);}94.5变量的作用域在讨论函数的参数传递时曾提到,形参变量只有在被调用时才分配内存单元,在调用11、结束时,即刻释放所分配的内存单元。这一点说明形参变量只有在函数内才有效。这种变量有效性的范围称作变量的作用域。不仅对于形参变量,C语言中所有的变量都有它的作用域。变量说明的方式不同,其作用域也不相同。变量只能在它的作用域内使用,即变量在它的作用域外不能被引用。在C语言中,按变量的作用域范围可分为两种,即局部变量(LocalVariable)和全局变量(GlobalVariable)。104.5.1局部变量在一个函数内部定义的变量被称作局部变量,也称为内部变量。这种变量的作用域是在本函数内。通俗地说12、,局部变量只能在定义它的函数内部使用,而不能在本函数外部使用。11局部变量举例#includemain()/*a,b,c只在main函数中有效*/{inta,b,c;intmax(intx,inty);scanf("%d,%d",&a,&b);c=max(a,b);printf("max(%d,%d)value=%d",a,b,c);}intmax(intx,inty)/*x,y,z只在max函数中有效*/{intz;if(x
5、行,必须在函数内有终止递归调用的手段。常用的办法是加条件判断,满足某种条件后就不再作递归调用,然后逐层返回。函数递归调用的说明7函数的递归调用举例合理的递归调用应该是有限的,是在一定条件下能终止的递归调用,即要有递归终止条件。【例4.4】用递归法求n!。n由用户输入,且满足0≤n≤16。8#includelongfac(intn);voidmain(){intn;longresult;printf("inputainteagernumber(0<=n<=16):");scanf(
6、"%d",&n);result=fac(n);printf("%d!=%ld",n,result);}longfac(intn)/*递归函数,求n!*/{longtemp;if(n<0
7、
8、n>16)printf("n<0,inputerror!");elseif(n==0
9、
10、n==1)temp=1;/*递归终止条件*/elsetemp=fac(n-1)*n;/*递归调用*/return(temp);}94.5变量的作用域在讨论函数的参数传递时曾提到,形参变量只有在被调用时才分配内存单元,在调用
11、结束时,即刻释放所分配的内存单元。这一点说明形参变量只有在函数内才有效。这种变量有效性的范围称作变量的作用域。不仅对于形参变量,C语言中所有的变量都有它的作用域。变量说明的方式不同,其作用域也不相同。变量只能在它的作用域内使用,即变量在它的作用域外不能被引用。在C语言中,按变量的作用域范围可分为两种,即局部变量(LocalVariable)和全局变量(GlobalVariable)。104.5.1局部变量在一个函数内部定义的变量被称作局部变量,也称为内部变量。这种变量的作用域是在本函数内。通俗地说
12、,局部变量只能在定义它的函数内部使用,而不能在本函数外部使用。11局部变量举例#includemain()/*a,b,c只在main函数中有效*/{inta,b,c;intmax(intx,inty);scanf("%d,%d",&a,&b);c=max(a,b);printf("max(%d,%d)value=%d",a,b,c);}intmax(intx,inty)/*x,y,z只在max函数中有效*/{intz;if(x
此文档下载收益归作者所有