★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
这个答案是怎么算出的?
展开
 我来答
bnujwch
2010-08-20 · TA获得超过1432个赞
知道小有建树答主
回答量:697
采纳率:100%
帮助的人:606万
展开全部
涉及到两个概念:递归调用、变量作用域

fun函数中用的w是全局的,值为3

递归调用返回值为5*4*3*2*1*3=360

主函数定义了w,覆盖了全区的,值为10,所以输出360*10=3600
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hefeng886
2010-08-20 · TA获得超过162个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:133万
展开全部
这个函数是计算类似一个复合阶乘的函数

这个得数是这么来的: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

这么说应该清楚了吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
邵钱伟
2010-08-20 · TA获得超过217个赞
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:181万
展开全部
发现楼主到底哪题不回。。
还是递归函数
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了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友eeb3998c1
2010-08-20
知道答主
回答量:43
采纳率:0%
帮助的人:14.9万
展开全部
上面老兄 回答太对了 我赞
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式