题目:
void fun ( int x )
{ if ( x/2 > 0) fun (x/2) ;
printf(" %d", x);
}
main()
{ fun(3) ; printf("\n") ; }
问题:
1、结果是多少?
2、求具体的解题步骤。
”然后fun(1)就返回了;返回出去正好是fun(3)的prinft,输出3“
这一句看不懂,fun(1)返回到哪里了?什么叫返回出去正好是fun(3)的prinft?有两个printf啊?到底是哪一个?
main()
{
fun(3);//进入fun(3)
//以下在fun(3)函数中
if(3/1>0) fun(1);//条件为真,进入fun(1)
//以下在fun(1)函数中
if(1/2>0)fun(0);//条件不为真,不会执行fun(0)
printf(" %d", 1);
//fun(1)结束
printf(" %d", 3);
//fun(3)结束
printf("\n") ;
}
函数返回到调用它的地方,从哪里开始,在哪里结束;
由于fun()函数是返回值是void,就没有返回值了,直接结束了。如果有返回值,比如int fun(),那就会在结束时返回一个int值。
在有返回值的情况下,如果单纯的执行fun(),那么返回值就相当于丢弃了;如果形如a=fun();,那么a就会接收到返回值。
什么叫返回上层?上层是哪里?