第六章 函数2.ppt
《第六章 函数2.ppt》由会员分享,可在线阅读,更多相关《第六章 函数2.ppt(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、6.3 6.3 函数的嵌套与递归调用函数的嵌套与递归调用6.3.1 6.3.1 嵌套调用嵌套调用C C规定:函数不可嵌套定义,但可以嵌套调用规定:函数不可嵌套定义,但可以嵌套调用main()调用函数调用函数a结束结束a函数函数b函数函数调用函数调用函数b6.3 嵌套调用和递归调用 6.3.2 6.3.2 函数的函数的递归调用递归调用 递归调用递归调用递归调用递归调用 在调用一个函数过程中又出现直接或间接地在调用一个函数过程中又出现直接或间接地调用该函数本身,前者称之为直接递归调用,后调用该函数本身,前者称之为直接递归调用,后者称之为间接递归调用。者称之为间接递归调用。func()调调func调
2、调func2调调func1func1()func2()float func(int n)int m;float f;f=func(m);.funcl(int n)int m;func2(m);.func2(int x)int y;funcl(y);.直接递归调用直接递归调用直接递归调用直接递归调用 间接递归调用间接递归调用间接递归调用间接递归调用 long int fact(int n)long int f;if(n=0)f=1;else f=n*fact(n-1);return(f);#include stdio.h void main()int n;long int result;long
3、 int fact(int n);while(1)printf(”Input a number:”);scanf(”%d”,&n);if(n=0)break;result=fact(n);printf(”Result=%ld”,result);【例例6_166_16】从键盘输入一非负整数从键盘输入一非负整数n n,并求出,并求出n!n!的值。的值。n!=n*(n-1)!结果分析:结果分析:n=4 f(4)=4*fact(4-1)=3 f(3)=3*fact(3-1)=2 f(2)=2*fact(2-1)=1 f(1)=1*fact(1-1)=0 f(0)=1回推回推递推递推运行情况:运行情况:
4、Input a number:4 Result=24递归调用递归调用嵌套调用嵌套调用if(n=0)/*递归终止条件递归终止条件*/f=1;递归过程的两个阶段:递归过程的两个阶段:fact(4)是主函数调用的。在一次调用是主函数调用的。在一次调用fact函数时函数时并不是立即得到并不是立即得到fact(4)的值,而是一次又一次地的值,而是一次又一次地进行递归调用进行递归调用(回推回推),直到,直到fact(1)时才有确定的值。时才有确定的值。之后,再递推出之后,再递推出fact(2)、fact(3)、fact(4)的值。的值。double xpower(float x,int n)if(n=0)
5、return(1);else return(x*xpower(x,n-1);#include stdio.h void main()double xpower(float x,int n);float x;int n;double r scanf(”%f%d”,&x,&n);r=xpower(x,n);printf(”Result=%f”,r);【例例6_17】编一程序,利用函数的递归调用求编一程序,利用函数的递归调用求x的的n次方的值,次方的值,其中其中n为正整数。为正整数。运行情况:运行情况:2,3 Result=8 小结:小结:任何有意义的递归调用总是由两部分组成:任何有意义的递归调用总
6、是由两部分组成:即即递归方式递归方式与与递归终止条件递归终止条件。if(n=0)/*递归终止条件递归终止条件*/return(1);6.4 6.4 作用域和存储类型作用域和存储类型概述概述变量是对程序中数据的存储空间的抽象变量是对程序中数据的存储空间的抽象内存内存.void main()int a;a=10;printf(“%d”,a);编译或函数调用时为其分配内存单元编译或函数调用时为其分配内存单元102000程序中使用变量名对内存操作程序中使用变量名对内存操作变量的属性变量的属性数据类型:变量所持有的数据的性质(数据类型:变量所持有的数据的性质(操作属性操作属性)存储属性存储属性存储方式存
7、储方式:静态存储与动态存储:静态存储与动态存储-静态变量静态变量与动态变量与动态变量生存期生存期:变量在某一时段存在:变量在某一时段存在作用域作用域:变量在某区域内有效:变量在某区域内有效-局部变量与局部变量与全局变量全局变量可见性可见性:可以对变量进行操作为可见:可以对变量进行操作为可见变量的存储类型变量的存储类型auto -自动型自动型register-寄存器型寄存器型static -静态型静态型extern -外部型外部型变量定义格式变量定义格式:存储类型存储类型 数据类型数据类型 变量表变量表;如如:int sum;auto int a,b,c;register int i;stati
8、c float x,y;局部变量与全局变量局部变量与全局变量局部变量局部变量-内部变量内部变量定义:在定义:在函数内定义函数内定义,只在本函数内有效只在本函数内有效说明:说明:mainmain中定义的变量只在中定义的变量只在mainmain中有效中有效不同函数中同名变量,占不同内存单元不同函数中同名变量,占不同内存单元形参属于局部变量形参属于局部变量可定义在复合语句中有效的变量可定义在复合语句中有效的变量局部变量可用存储类型局部变量可用存储类型:auto auto register static register static (默认为默认为autoauto)例例 不同函数中同名变量不同函数中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六章 函数2 第六 函数
限制150内