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

更新时间:2023-03-28 15:43:01 阅读量: 实用模板 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

本文来源:https://www.bwwdw.com/article/m13n.html

Top