C语言中 递归函数 的return 返回值问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 05:46:38
//请看以下程序:
#include "stdio.h"
#include "conio.h"
age(int n)
{
int c=0;
printf("C=%d N=%d\n",c,n);
if(n==1) c=10;
else c=age(n-1)+2;
printf("c=%d n=%d\n",c,n);
return(c); // return的返回值 C 它返回的值是返回给 主函数main吗? 还是返回给 age() 函数 ????? 为什么??
}
main()
{
printf("%d",age(5));
}

age函数中有这句:
c=age(n-1)+2;
这里就是age函数使用了它调用的age函数的返回值,这也就是递归.
main函数中有这句:
printf("%d",age(5));
这里是主函数使用了它调用的age函数的返回值.

所以说,一个函数的返回值是给谁并不是在定义的时候就决定的,要看它被哪个调用.
简单地说,谁调用它了,他就把值返回给谁.
(exit这种特殊情况不在我们的考虑之内^_^)

所谓函数返回值是一个函数在运算结束以后向调用它的母函数或者系统反馈一个值,这个值可以是各种变量类型.
举个简单的例子:
int add(int a,int b)
{
return (a+b);
}

int main()
{
int res;
res=add(3,4);
printf("%d",res);
return 0;
}
在主函数main中调用子函数add,并传递参数3和4过去,add经过运算后得到值7,通过return语句将得到的值返回给调用它的main函数供其使用,而在main中,返回值被用于给res赋值。
函数返回值就可以理解为解决一个问题以后得到的结论,把这个结论交给别人,就像写在书上成为一个定理,来让别人使用。

一共返回了五次,头四次返回给了age(n)自身,最后一次返回给main()函数

return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。
return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。 如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
return语句后面具体是什么内容,这就要具体情况具体分析了:
(1) 在返回类型是char的函数中,return后应该是c