★C语言,函数部分,第7题
下面程序的输出结果是()intw=3;main(){intw=10;printf("%d\n",fun(5)*w);}fun(intk){if(k==0)returnw;...
下面程序的输出结果是()
int w=3;
main()
{ int w=10;printf("%d\n",fun(5)*w);}
fun(int k)
{ if(k==0) return w;
return (fun(k-1)*k);}
答案:3600
这个答案是怎么算出的? 展开
int w=3;
main()
{ int w=10;printf("%d\n",fun(5)*w);}
fun(int k)
{ if(k==0) return w;
return (fun(k-1)*k);}
答案:3600
这个答案是怎么算出的? 展开
4个回答
展开全部
涉及到两个概念:递归调用、变量作用域
fun函数中用的w是全局的,值为3
递归调用返回值为5*4*3*2*1*3=360
主函数定义了w,覆盖了全区的,值为10,所以输出360*10=3600
fun函数中用的w是全局的,值为3
递归调用返回值为5*4*3*2*1*3=360
主函数定义了w,覆盖了全区的,值为10,所以输出360*10=3600
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个函数是计算类似一个复合阶乘的函数
这个得数是这么来的:3*1*2*3*4*5*10=3600
fun(5)的计算结果是:fun(0)*fun(1)*fun(2)*fun(3)*fun(4)*fun(5)=3*1*2*3*4*5
这么说应该清楚了吧?
这个得数是这么来的:3*1*2*3*4*5*10=3600
fun(5)的计算结果是:fun(0)*fun(1)*fun(2)*fun(3)*fun(4)*fun(5)=3*1*2*3*4*5
这么说应该清楚了吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
发现楼主到底哪题不回。。
还是递归函数
fun(5) 调用fun(4)*5 360
fun(4) 调用fun(3)*4 72
fun(3) 调用fun(2)*3 18
fun(2) 调用fun(1)*2 6
fun(1) 调用fun(0)*1 3
fun(0) 返回 w 3
fun(5) 再乘10 3600
还有W 再FUN 是全局变量,为3 到main 函数又定义为10了
还是递归函数
fun(5) 调用fun(4)*5 360
fun(4) 调用fun(3)*4 72
fun(3) 调用fun(2)*3 18
fun(2) 调用fun(1)*2 6
fun(1) 调用fun(0)*1 3
fun(0) 返回 w 3
fun(5) 再乘10 3600
还有W 再FUN 是全局变量,为3 到main 函数又定义为10了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
上面老兄 回答太对了 我赞
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询