文档详情

函数与编译预处理.ppt

发布:2025-06-08约1.5万字共67页下载文档
文本预览下载声明

(2)递归函数的执行过程【例7.12】编一递归函数求n!。思路:以求4的阶乘为例:4!=4*3!,3!=3*2!,2!=2*1!,1!=1,0!=1。递归结束条件:当n=1或n=0时,n!=1。递归公式:n!=1(n=0,1)n×(n-1)!(n1)*第31页,共67页,星期日,2025年,2月5日程序如下:floatfact(intn){floatf=0;if(n0)printf(n0,error!);elseif(n==0||n==1)f=1;elsef=fact(n-1)*n;return(f);}main(){intn;floaty;printf(\nInputn:);scanf(%d,n);y=fact(n);printf(%d!=%-10.0f\n,n,y);}运行情况如下:Inputaintegernumber:4?4!=24*第32页,共67页,星期日,2025年,2月5日递归调用过程回推main()fact(4)fact(3)fact(2)fact(1){{{{{……………y=fact(4);f=4*fact(3);f=3*fact(2);f=2*fact(1);f=1;……………return24return6return2return1}}}}}递推*第33页,共67页,星期日,2025年,2月5日7.3局部变量和全局变量及其作用域7.3.1变量的作用域1.局部变量及其作用域变量的作用域:变量在程序中可以被使用的范围。根据变量的作用域可以将变量分为局部变量和全局变量。局部变量(内部变量):在函数内或复合语句内定义的变量以及形参。作用域:函数内或复合语句内。【例7.13】分析下面程序的运行结果及变量的作用域。问题:一个变量在程序的每个函数中都能使用吗?*第34页,共67页,星期日,2025年,2月5日voidsub(inta,intb){intc;a=a+b;b=b+a;c=b-a;printf(sub:\ta=%db=%dc=%d\n,a,b,c);}局部变量main(){inta=1,b=1,c=1; printf(main:\ta=%db=%dc=%d\n,a,b,c);sub(a,b);printf(main:\ta=%db=%dc=%d\n,a,b,c);{inta=2,b=2;printf(comp:\ta=%db=%

显示全部
相似文档