资源描述:
《函数的递归调用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、4、函数的递归调用:函数中出现直接或间接的自身调用例、计算f(x)=xn,要求采用递归调用函数完成。•分析:求xm=x×xm-1,只需知道xm-1/*设函数f(x,n)求取xn(此时n=m)*/求xm-1=x×xm-2,只需知道xm-2/*自身调用f(x,n)(此时n=m-1)*/求xm-2=x×xm-3,只需知道xm-3/*f(x,n),n=m-2*/┆x2=x×x1/*f(x,n),n=2*/x1=x×x0/*f(x,n),n=1*/x0=1/*f(x,n),n=0*/n=0为递归调用终止条件f
2、(intx,intn){inty;if(n>0)y=f(x,n-1)*x;elsey=1;returny;}main(){intx,n;printf(“输入xn的x、n值:”);scanf(“%d,%d”,&x,&n);printf(“%d**%d=%d”,x,n,f(x,n));}五、局部变量和全局变量1、局部变量在一个函数内部定义的变量是内部变量,它只在本函数内有效,也就是说只有在本函数内才能引用它们,在此函数以外是不能使用这些变量的。主函数内定义的变量也是局部变量,其它函数不能引用。例
3、:2、全局变量在函数之外定义的变量称为外部变量,外部变量是全局变量。全局变量可以为本文件中其它函数所共用。即在全局变量定义点之后的所有函数都可以使用该变量。全局变量增加了函数间联系的渠道。但不提倡用这种方式,因为它降低了函数的独立性。使得模块间的耦合增加,提高了程序的复杂性。3、外部变量说明如果函数要使用外部变量,且这个外部变量的定义点在该函数之后,或定义点不在本文件内,则要进行外部变量的说明。例:外部变量说明只是申明该变量是一个已在外部定义过的变量,可以在任何需要使用它的函数内作说明,但作说明的同
4、时不能给该变量赋初值。注意:局部变量与外部变量同名时,在局部变量定义的函数内,外部变量不起作用,也不能在该函数内作此外部变量说明,否则会产生编译错误。六、动态存储变量和静态存储变量1、变量的存储类别把变量分为局部变量与外部变量是从变量的作用域来分的。如果从变量值存在的时间(即生存期)来分,可以分为静态存储变量和动态存储变量。内存中供用户使用的部分可分为:程序区(放代码)静态存储区(放数据)动态存储区(放数据)变量的存储方式:程序区(放代码) 静态存储区全局变量局部静态变量(有static说明)int
5、a;main(){staticintb;}动态存储区函数形参变量局部自动变量(无static说明)函数调用相关数据intfunc1(intx){}main(){intc;/*省略了auto*/autointd;/*auto可以省*/} 2、局部变量的存储方式上面的表格中已经说明,局部变量的存储方式有两种:static与auto,如果不加以特别说明,系统默认为auto类型。两者的区别是什么呢?只要记住静态存储与动态存储的区别就可以了。程序区(放代码) 静态存储区存储的变量在整个程序运行期间有效,变量的
6、值保持不变,直到有语句改变它。动态存储区当变量超出作用范围时,它的存储空间被收回,下次再分配到时,上次的值的状态不能保持。如果我们希望局部变量的值在离开作用域后仍能保持,则将它说明为静态局部变量。其它说明:1、局部静态变量赋初值只在编译时赋一次,程序运行时就不再执行赋初值的操作了。2、局部静态变量如果不赋初值则自动为0。自动变量不赋初值则初始值为随机数值。3、全局变量的存储方式全局变量在函数的外部定义,编译时即在静态存储区分配空间。它可以为程序中的其它函数引用。如果其它文件中函数要引用它,则需在要引
7、用它的文件中作extern说明。如果不想被其它文件中的函数引用,可以在定义时作static说明。4、变量的存储类别分为四种自动的auto可用于局部变量寄存器的register静态的static外部的extern可用于全局变量七、内部函数和外部函数1、内部函数根据函数能否被其它源文件调用,将函数区分为内部函数和外部函数。如果一个函数只能被本文件中其它函数所调用,它称为内部函数。在定义内部函数时,在函数名和函数类型前面加static。static类型函数名(形参表)例:上例中的fun函数因被定义为sta
8、tic类型,它不能被其它文件中的函数调用。2、外部函数extern类型函数名(形参表)上例中的fun2,fun3函数都是外部函数。对不加特别说明的,都认为是外部函数。TURBOC2.0中,主调函数调用其它文件中的外部函数可以不加外部函数说明。注意:下面的示例包括三个文件。请按注释把下面的内容分开保存到指定名称的文件中。编译的方法请见下面的“多文件编译”一段。八、多文件编译大型的软件开发往往由多人进行,且源程序代码量非常大,为便于合作和管理,通常把源代码放在多个文件中,