C语言,递归函数是如何调用

#include<stdio.h>
int d=1;
fun(int p)
{
static int d=5;
d+=p;
printf(" %d",d);
return d;
}
main()
{
int a=3;
printf(" %d\n",fun(a+fun(d)));
}
---------------------------------------------------------------------------------------------------------------------
此程序输出 6 15 15
求解是怎么输出的啊?详细的说一下程序的执行过程。

没有递归,你把自己想的太高端了
先执行fun(d)也就是fun(1)
d=5,d=d+p=5+1=6
打印了6
然后执行fun(a+fun(d))=fun(3+6)=fun(9)
d=6,d=d+p=6+9=15
打印了15
最后打印fun(a+fun(d))
等于15追问

可是,主函数只有一条打印语句啊?怎么分三次输出的啊

追答

fun里面有一个printf看到没=.=

追问

看到了,但还是不懂啊TAT,printf(" %d\n",fun(a+fun(d)))这句直接把我看傻了

追答

可以这样看
int x,y;
x=fun(d);
y=fun(a+x);
printf("%d\n",y);
好了智商低就慢慢看,勤能补拙,不要放弃

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-30
首先fun(d) d=1时 printf("%d",d) 输出是 6 fun(a+6) 接着 printf("%d",d)输出为 14 最后
printf(" %d\n",fun(a+fun(d)) 输出 14

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网