C语言中返回值问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中返回值问题相关的知识,希望对你有一定的参考价值。
long fun(int n)
long s;
if(n==1||n==2) s=2;
else s=n-fun(n-1);
return s;//如果执行这个语句,这个S值返回到什么地方?
main()
printf("%ld",fun(4));
当第一次进入
fun(int n)//此时n=4
long s;
if(n==1||n==2)
s=2; //条件不成立会执行else
else
s=n-fun(n-1); 这个时候会再次调用本函数
return s;
这时会第二次进入
fun(int n)//此时n=3
long s;
if(n==1||n==2)
s=2; //条件还不成立会执行else
else
s=n-fun(n-1); 这个时候还会再次调用本函数
return s;
这时会第三次进入
fun(int n)//此时n=2
long s;
if(n==1||n==2)
s=2; //条件成立
else
s=n-fun(n-1);
return s;//此时返回2,会返回到第二次调用它的地方
第二次调用的地方为:
s=n-fun(n-1)//通过第三次执行fun(n-1)已经得到结果为2,此时的s为1
此时第二次调用会返回5,然后程序返回到第一次调用的地方
第一次调用的地方为:
s=n-fun(n-1)//通过第二次执行fun(n-1)已经得到结果为1,此时的s为3
输出结果为3 参考技术A 返回到输出语句也就是printf()中,
即直接输出到屏幕上了 参考技术B 返回到函数的调用那里 参考技术C 调用fun(4)后返回一个值(s)。
printf("%ld",fun(4));差不多等于 printf("%ld",s); 参考技术D 这要看编译器如何生成代码了,与参数入栈以及入栈顺序有关
以上是关于C语言中返回值问题的主要内容,如果未能解决你的问题,请参考以下文章