c 语言 什么情况下用到return1 和return 0,还有这是什么意思

比如 long fun (int n )
{if(n>1)
return (n*fun(n-1);
return 1;}
如果不输入return 1就是答案就是不对的,而有些函数不需要返回return 1 return 0也是对的- -。求高手指导一下c 语言 什么情况下用到return1 和return 0

你理解误区了,可能楼主没有递归的概念,也可能楼主没有返回值的概念。首先,声明返回值类型为long,那么函数中必须return 一个long或者可以隐式转换为long的值。其次,分支判断中的return有不执行的可能,编译器会警告,也可能出错。这里return 1;其实是else{ return 1;}为什么呢;楼主想想,既然函数是自身调用的递归,那么什么时候递归结束呢?是n <=1其实应该是n ==1;ok,那么返回值是什么呢,1的阶乘是1,所以在此返回1.这是楼主彻底误解的关键

其次,说说main返回值的含义。这是个典型,大家都用,如果main的执行某个地方(如malloc)出错,那么,通常会向操作系统返回-1,来表示我的主程序在执行过程中遇到错误退出,返回0表示正常退出。返回值在于让外部知道你的运行情况,一般返回负数表示运行失败。

理解了这两点,楼主就不会再迷茫了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-30
函数问题跟数学上的很相似啊,如果你函数返回值是什么类型的,函数末尾返回值就是什么类型的,还有的函数是void型的则该类函数不需要返回类型的
第2个回答  2012-07-30
因为你的函数写了需要返回long值
在满足if的情况下是有返回值的 但是如果if的结果是false的话 不就没返回值了么?
所以之后要加上return X 使得代码能在所有情况下都有返回long值
第3个回答  2012-07-30
你这是递归求n的阶乘啊!n!=n* (n-1)*...*1,所有档n=1的话就应该return1啊!return 0的话得数就为0了。这里肯定要 return 1的。如果返回值为bool的函数的话return1或者return 0的情况就很多了,还是要具体问题具体分析。
希望能帮助到你。
第4个回答  2012-07-30
return 1 或 0 是由自己程序定义,一般情况linux下0 是成功,-1不成功。你这个函数是个递归调用,必须有退出,如果不写return 1;函数默认应该返回0吧。

相关了解……

你可能感兴趣的内容

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