c语言 函数.ppt
《c语言 函数.ppt》由会员分享,可在线阅读,更多相关《c语言 函数.ppt(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第12讲 函数(二)函数的嵌套调用函数的递归调用数组作为函数参数void printmessage(void);void printstar(void);main()printmessage();void printmessage(void)printstar();printf(“t*Welcome*n”);printstar();void printstar(void)printf(“t*n”);函数的嵌套调用 即在函数调用过程中又调用另一个函数可以多层嵌套调用mainmain函数函数a a函数函数b b函数函数调用调用a a函数函数调用调用b b函数函数结束结束结束结束结束结束调用流程弦截
2、法如下:弦截法如下:(1)取两点)取两点x1x2,if(f(x1)和和f(x2)符号相反),符号相反),则则x0(x1,x2)。else则应改变则应改变x1,x2,直到直到f(x1),f(x2)异号为止。异号为止。注意:注意:x1,x2值不应差太大,以保证值不应差太大,以保证(x1,x2)区间内区间内只有一个根。只有一个根。(2)连接)连接f(x1)和和f(x2)两点,此线(即弦)交两点,此线(即弦)交x轴于轴于x。点点x坐标可用下式求出:坐标可用下式求出:再从再从x求出求出f(x)。)。(3)if(f(x)、f(x1)同符号),则同符号),则x0(x,x2),x1=x。else则则x2=x。
3、(4)重复步骤()重复步骤(2)和()和(3),直到),直到|f(x)|为一个很小的数,例如为一个很小的数,例如10-6。此。此时认为时认为f(x)0。f(x2)x2x1xf(x1)f(x)用弦截法求 x3-5*x2+16*x-80=0 方程的根。嵌套调用示例 x1*f(x2)-x2*f(x1)x=f(x2)-f(x1)分别用几个函数来实现各部分功能:(1)用函数f(x)来求x的函数:x3-5*x216*x-80。(2)用函数xpoint(x1,x2)来求f(xl)和f(x2)的连线与x轴的交点x的坐标。(3)用函数root(x1,x2)来求(x1,x2)区间的那个实根。(4)在函数main(
4、)中对x1、x2取值。v显然,执行root函数过程中要用到函数xpoint,而执行xpoint函数过程中要用到f函数。函数设计include“math.h”float f(float x)/*定义定义f函数函数,以实现以实现f(x)*/float y;y=(x-5.0)*x+16.0)*x-80.0;return(y);float root(float x1,float x2)/*定义定义root函数,求近似根函数,求近似根*/float x,y,yl;y1f(x1);do x=xpoint(x1,x2);yf(x);if(y*yl0)/*f(x)与与f(x1)同同号号*/yl=y;x1=x;
5、else x2=x;whi1e(fabs(y)=0.000001);return(x);main()/*主函数主函数*/float x1,x2,f1,f2,x;doprintf(input x1,x2:n”);scanf(%f,%f,&x1,&x2);fl=f(x1);f2=f(x2);while(fl*f2)=0);xroot(x1,x2);printf(A root of equation is 8.4f,x);float xpoint(float x1,float x2)/*定义定义xpoint函数,求出弦与函数,求出弦与x轴交点轴交点*/float y;y(xl*f(x2)-x2*f(
6、x1)/(f(x2)f(xl);return(y);input x1input x1,x2x2:2 2,6 6A root of equation is A root of equation is 5.00005.0000函数的递归调用 在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。例如:int f(int x)int y,z;z=f(y);return(2*z);在调用函数f的过程中,又要调用f函数,这是直接调用本函数,见下图:f函数函数 调用调用f函数函数下面是间接调用本函数:f1函数函数f2函数函数调用调用f2函数函数调用调用f1函数函数可以看到,这两种递归
7、调用都是无终止的自身调用。显然,程序中不应出现这种无终止的递归调用,而只应出现有限次数的、有终止的递归调用,这可以用if语句来控制,只有在某一条件成立时才继续执行递归调用,否则就不再继续。有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁,问第3个人,又说比第2个人大2岁。问第2个人,说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5个人多大?分析:分析:递归调用示例-1age(5)=age(4)2 age(4)=age(3)2 age(3)=age(2)2 age(2)=age(1)2 age(1)=10可以用式子表述如下:10 (n=1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c语言 函数 语言
限制150内