A-A+

有以下程序 yoidfun(intn int*S){ intf; if(n=1)*s=n+l

2022-08-12 18:41:27 问答库 阅读 197 次

问题详情

有以下程序 yoidfun(intn,int*S){ intf; if(n=1)*s=n+l; else{fun(n-1,&f);*S=f;}} main(){ intx=0: fun(4,&x); printf(%dn,x); } 程序运行后的输出结果是
A.1
B.3
C.4
D.2

请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:D
函数fun为递归调用函数,如果n的值为1,那么后面形参指向的空间存放n+1,否则继续计算fun(n.1)的值。调用分析过程如下:fun(4,&x)-→fun(3,&x)-→fun(2,&x)-→fun(1,&x)在回归的过程中,对于x内的数据并没有改动。

考点:程序