有以下程序 void fun ( int n ,int *s ) { int f; if( n==1 ) *s = n+1 ; else { fun( n-1, &f) ; *s = f ; } } main() { int x =0; fun( 4,&x

admin2019-12-17  22

问题 有以下程序
void fun ( int n ,int *s ) {
int f;
if( n==1 ) *s = n+1 ;
else { fun( n-1, &f) ; *s = f ; } }
main() {
int x =0;
fun( 4,&x );
printf("%d\n",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内的数据并没有改动。
转载请注明原文地址:https://kaotiyun.com/show/L1Cp777K
0

最新回复(0)