欢迎来到天天文库
浏览记录
ID:20233158
大小:48.50 KB
页数:8页
时间:2018-10-09
《n阶乘递归调用展开式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、longfact(intn)1{2longk;3if(n<0)4{5printf(“Dataerror!”);6exit(0);7}8elseif(n==0
2、
3、n==1)k=1;9elsek=n*fact(n-1);10returnk;11}main(){intn;longf;printf(“Pleaseinputanintegralnumber:”);scanf(“%d”,&n);f=fact(n);printf(“%d!=%ld”,n,f);}求fact(4)的详解过程,执行了的语句用红
4、色表示longfact(4)1{2longk;3if(4<0)4{5printf(“Dataerror!”);6exit(0);7}8elseif(4==0
5、
6、4==1)k=1;9elsek=4*fact(4-1);/*断点1:调用fact(3)*/10returnk;11}longfact(3)1{2longk;3if(3<0)4{5printf(“Dataerror!”);6exit(0);7}8elseif(3==0
7、
8、3==1)k=1;9elsek=3*fact(3-1);/*断点2:调
9、用fact(2)*/10returnk;11}longfact(2)1{2longk;3if(2<0)4{5printf(“Dataerror!”);6exit(0);7}8elseif(2==0
10、
11、2==1)k=1;9elsek=2*fact(2-1);/*断点3:调用fact(1)*/10returnk;11}longfact(1)1{2longk;3if(1<0)4{5printf(“Dataerror!”);6exit(0);7}8elseif(1==0
12、
13、1==1)k=1;9elsek
14、=2*fact(2-1);10return1;/*因为k=1,所以返回1*//*再把1返回到fact(2)的断点3,看下程序*/11}longfact(2)1{2longk;3if(2<0)4{5printf(“Dataerror!”);6exit(0);7}8elseif(2==0
15、
16、2==1)k=1;9elsek=2*fact(2-1);/*返回断点3,把调用fact(1)/*返回的1代入到*//*fact(1)=1代入得k=2*1=2*/10return2;/*从上行知k=2,把2返回到fac
17、t(3)的断点2,看下程序*/11}longfact(3)1{2longk;3if(3<0)4{5printf(“Dataerror!”);6exit(0);7}8elseif(3==0
18、
19、3==1)k=1;9elsek=3*fact(3-1);/*断点2:把调用fact(2)/*返回的2代入到*//*fact(2)=2代入得k=3*2=6*/10return6;/*从上行知k=6,把6返回到fact(4)的断点1,看下程序*/11}longfact(4)1{2longk;3if(4<0)4{5pr
20、intf(“Dataerror!”);6exit(0);7}8elseif(4==0
21、
22、4==1)k=1;9elsek=4*fact(4-1);/*断点1:把调用fact(3)*//*返回的6代入到fact(3)=6代入得k=4*6=24*/10return24;11}最后计算出结果4!=4*3*2*1=24
此文档下载收益归作者所有