第一范文网 - 专业文章范例文档资料分享平台

C语音(函数的嵌套调用、递归调用)

来源:用户分享 时间:2022-08-26 本文由只剩骄傲 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

Date: September 25, 2013 2013年9月25日星期三

Neusoft Institute of Information

第五章 函 数办公室:C7座201 EMAIL:wenh@http://www.77cn.com.cn 课件下载网址:ftp://http://www.77cn.com.cn

任课教师:温荷

IT Education & Training IT Education & Training

Date: September 25, 2013

Neusoft Institute of Information

授课要点 函数的嵌套调用 函数的递归调用

IT Education & Training

Date: September 25, 2013

Neusoft Institute of Information

函数的嵌套调用f1(){ … f2(){ … f3(){ …

f2();… } }

f3();… }

……

IT Education & Training

Date: September 25, 2013

Neusoft Institute of Information

函数的嵌套调用举例1求3 +5

5

3

。 int cal(int x,int y){

main(){ int a=3,b=5,s;

int result,s1,s2;

int pow(int m,int n){ int i,res=1; for(i=0;i<n;i++) res *=m; return res; }

s1=powl(x,y);s2=pow(y,x); result=s1+s2;

s=cal(a,b);printf(“%d”,s); } }IT Education & Training

return result;

Date: September 25, 2013

Neusoft Institute of Information

函数的嵌套调用举例2自定义函数mymax2(),求出2个参数的最大值,然后定 义函数 mymax3(),调用mymax2()求出3个参数中的最 大值,将值返回给主函数,输出该结果。

函数首部为: float mymax3(float x, float y, float z)

IT Education & Training

Date: September 25, 2013

Neusoft Institute of Information

模仿练习1、自定义函数mymax (),求出3个参数的最大值; 自定义函数 mymin(),求出3个参数的最小值; 自定义函数mysub(),调用mymax()和mymin()求出3个参数的最 大值与最小值的差; 在主函数中调用mysub(),输出结果。 函数首部为: float mymax (float x, float y,float z) float mymin(float x,float y,float z) float mysub (float x,float y,float z) 2、计算s=1k+2k+3k+……+N k 函数首部为:long f1(int n,int k) /*计算n的k次方*/ long f2(int n,int k) /*计算1到n的k次方之累加和*/

IT Education & Training

Date: September 25, 2013

Neusoft Institute of Information

案例解答#define K 4 #define N 5 long f1(int n,int k) /*计算n的k次方*/ { long power=n; int i; for(i=1;i<k;i++) power *= n; return power; } long f2(int n,int k) /*计算1到n的k次方之累加和*/ { long sum=0; int i; for(i=1;i<=n;i++) sum += f1(i, k); return sum; } main() { printf("Sum of %d powers of integers from 1 to %ld = ",K,N); printf("%d\n",f2(N,K)); }

IT Education & Training

Date: September 25, 2013

Neusoft Institute of Information

函数的递归调用 C语言的函数调用允许直接或间接地调用该函数本身,称为函 数的递归调用。 含有直接或间接调用自己的函数称为递归函数。 函数f 函数f1 函数f2

调用函数f 直接调用本身IT Education & Training

调用函数f2

调用函数f1

间接调用本身

Date: September 25, 2013

Neusoft Institute of Information

函数的递归调用举例

用递归函数求4! 4! = 4*3! ; 3! = 3*2! ; n! = n*(n-1)! 1! = 1

2!

= 2*1! ;1! = 1 ;

IT Education & Training

Date: September 25, 2013

Neusoft Institute of Information

函数的递归调用举例 例:用递归函数求n! n! = n * (n-1)!myFac(n) 就是求n!

int myFac( int n) { if (n==1) return 1; //递归的结束条件 return n*myFac(n-1); }myFac(n-1) 就是求(n-1)!IT Education & Training

Date: September 25, 2013

Neusoft Institute of Information

函数的递归调用举例

用递归函数求4!

调用过程 fac(4) fac(3)*4

返回过程 reutrn(24) return(6*4) reutrn(2*3) reutrn(1*2) reutrn(1)

fac(2)*3fac(1)*2

IT Education & Training

Date: September 25, 2013

Neusoft Institute of Information

函数的递归调用举例 例:用递归函数求n!的完整程序 #include <stdio.h> int myFac(int n); main() { int f, n; scanf("%d", &n); f = myFac(n); printf("%d!=%d\n", n, f); } int myFac( int n) { int s; if (n==1) s= 1; //递归的结束条件 else s= n*myFac(n-1); return s; } IT Education & Training 单步调试,理解递归程序的 执行流程

Date: September 25, 2013

Neusoft Institute of Information

函数的递归调用举例 递归算法的组成: – 递归终止条件:当满足一定条件时,递归调用 必须可以结束,否则会无限地递归调用而导致 程序无法结束。 例如n!中当n=1时,令结果为1则可以结束递 归调用,否则它将继续调用(0)!而无限继续下 去。 对于由多个通项表示的情况,则需要给出最 后一个递归调用的所有项的值。如an = an-1 + an-2 ,要给出n=1时的结果以及n=2时结果 才可以结束递归调用。 – 递归表达式,如fac(n)=n*fac(n-1)IT Education & Training

Date: September 25, 2013

Neusoft Institute of Information

函数的递归调用举例求下数列的第20项的值。 1,2,3,5,8,13,21,34…… a1=1; a2=2; a3=a1+a2; … an=an-1 + an-2;

IT Education & Training

Date: September 25, 2013

Neusoft Institute of Information

函数的递归调用举例求下数列的第20项的值。 1,2,3,5,8,13,21,34…… f(1)=1; f(2)=2;f(n)=f(n-1)+f(n-2);

IT Education & Training

Date: September 25, 2013

Neusoft Institute of Information

函数的递归调用举例main() { int a; a=f(20); printf(“%d”,a); }int f(int n){ int s; if(n==1) s= 1; else if(n==2) s= 2; else s= f(n-1)+f(n-2); return s; }

IT Education & Training

Neusoft Institute of Information

办公室:C7座201 EMAIL:wenh@http://www.77cn.com.cn 课件下载网址:ftp://http://www.77cn.com.cn

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新实用模板C语音(函数的嵌套调用、递归调用)全文阅读和word下载服务。

C语音(函数的嵌套调用、递归调用).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/jiaoyu/1505884.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top