return 1是什么意思?
#include<stdio.h>longfun(intn){if(n>1)return(n*fun(n-1));return1;}main(){printf("10!=...
#include<stdio.h>
long fun(int n)
{
if(n>1)
return (n*fun(n-1));
return 1;
}
main()
{
printf("10!=%1d\n",fun(10));
}
这里的return 1是什么意思?
坐等。。谢谢各位了。。
能纤细的说下么。。
如果求的是10!
n>1,什么时候结束叠乘?
如果按一楼,是不是就是相当于else return 1? 展开
long fun(int n)
{
if(n>1)
return (n*fun(n-1));
return 1;
}
main()
{
printf("10!=%1d\n",fun(10));
}
这里的return 1是什么意思?
坐等。。谢谢各位了。。
能纤细的说下么。。
如果求的是10!
n>1,什么时候结束叠乘?
如果按一楼,是不是就是相当于else return 1? 展开
6个回答
展开全部
if(n>1)
return (n*fun(n-1));
是一个 if 语句。很明显,如果 n 大于 1,则 执行 return (n*fun(n-1)); 否则就执行下面的语句。
因为 main 函数里调用的是 fun(10); 所以对于 fun 函数,入口参数 n 等于10;10 大于 1,所以执行 return (n*fun(n-1)); 又调用了 fun(9)。。。
就这样一直调用到 fun(1); 此时 n > 1 不成立,所以不执行
return (n*fun(n-1));
而是执行下一句 return 1; 这样就返回到上一层 fun(2) 的return语句处,即
return ( 2 * fun( 1 ) ); fun(2) 继续向上返回,直到 fun(10);
**********************************************************************
多一句嘴,从代码风格看,我猜你大概看的是谭浩强的书吧。老谭的书过时了,内容已经非常陈旧了。劝你不要看了。
main() 这种形式过时了,现在应该写成
int main(void)
{
return 0;
}
这种形式。
而且main 函数之前还要写 函数原型。
推荐你用 C Primer Plus 入门,网上有中文版pdf。你可以和谭浩强的书对照着看,看看哪本书好。我认为比老谭的书强多了。
return (n*fun(n-1));
是一个 if 语句。很明显,如果 n 大于 1,则 执行 return (n*fun(n-1)); 否则就执行下面的语句。
因为 main 函数里调用的是 fun(10); 所以对于 fun 函数,入口参数 n 等于10;10 大于 1,所以执行 return (n*fun(n-1)); 又调用了 fun(9)。。。
就这样一直调用到 fun(1); 此时 n > 1 不成立,所以不执行
return (n*fun(n-1));
而是执行下一句 return 1; 这样就返回到上一层 fun(2) 的return语句处,即
return ( 2 * fun( 1 ) ); fun(2) 继续向上返回,直到 fun(10);
**********************************************************************
多一句嘴,从代码风格看,我猜你大概看的是谭浩强的书吧。老谭的书过时了,内容已经非常陈旧了。劝你不要看了。
main() 这种形式过时了,现在应该写成
int main(void)
{
return 0;
}
这种形式。
而且main 函数之前还要写 函数原型。
推荐你用 C Primer Plus 入门,网上有中文版pdf。你可以和谭浩强的书对照着看,看看哪本书好。我认为比老谭的书强多了。
展开全部
这是一个递归,那个return 1是相当于else return 1;
当递归到1的时候程序就变成了10的阶乘这是函数也结束
返回的值就变成了10!
当递归到1的时候程序就变成了10的阶乘这是函数也结束
返回的值就变成了10!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没什么意思,就是函数结束后,返回个-1,经常用于错误返回。如:
int
func_a(int
test)
{
if(test==0)
{
return0;
}
else
return
-1;
}
void
main()
{
int
temp=1;
if(func_a(temp))
printf("test=0");
else
printf("test!=0");
}
int
func_a(int
test)
{
if(test==0)
{
return0;
}
else
return
-1;
}
void
main()
{
int
temp=1;
if(func_a(temp))
printf("test=0");
else
printf("test!=0");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果n<=1
函数fun()的值就是1
return后面的值就是函数的出口
函数fun()的值就是1
return后面的值就是函数的出口
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询