有以下程序
#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呀
哪个是答案????输出这么多