答案为什么是2呀!?谁来写一下程序的运行过程。s最后不是指向了f吗?

有以下程序

#include <stdio.h>

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

3
B

1
C

2
D

4

*s = f;
不是s=&f
这是把s指向的地址里的值修改为f,如果对基本概念的理解不到位,你后面做题就做了个寂寞
-=-=-=
那么再回头看代码
当n==1时,*s=n+1,其实就是*s=2
那么不管递归多少次,前面的值都被最后这个2给覆盖了,最终s里存的值肯定是2呀
然后递归开始回溯,*s = f;
f就是传进去的*s,f的值就是2,还是*s=2,最终s还是2呀

哪个是答案????输出这么多

img