有以下程序 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 ; fu

admin2016-12-28  28

问题 有以下程序
    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)j
    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/gwDp777K
0

最新回复(0)