|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 不明白,要多问。
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1140
人关注过本帖
标题:
不明白,要多问。
只看楼主
加入收藏
编译中。。
来 自:中国
等 级:
黑侠
帖 子:198
专家分:511
注 册:2011-7-29
第
21
楼
收藏
得分:0
那你帮我分析一下,整个流程
即我在这个程序 输入1个 4.
程序执行
:4被赋到了x里,x的值 被赋到了a 里。 即a等于4。
这之后 你帮我分析一下,他将会干什么,详细点 好不
当我感到些许疲倦时 便想躺在阳光下,小路旁 . 可这些往往都是奢望..
2011-08-02 18:07
举报帖子
使用道具
赠送鲜花
风生钧起
来 自:江西
等 级:
业余侠客
帖 子:383
专家分:246
注 册:2011-7-26
第
22
楼
收藏
得分:0
授人
以渔
那人来教估计也只会教到a *= factorial(a-1);
`
`
`
墨一世红颜倾醉己 霁天谁与话风流
修仙``````````````````````````````````````````````
2011-08-02 18:12
举报帖子
使用道具
赠送鲜花
编译中。。
来 自:中国
等 级:
黑侠
帖 子:198
专家分:511
注 册:2011-7-29
第
23
楼
收藏
得分:0
听不懂。。。。。,饿
自己能弄明白就不来问了
当我感到些许疲倦时 便想躺在阳光下,小路旁 . 可这些往往都是奢望..
2011-08-02 18:14
举报帖子
使用道具
赠送鲜花
voidx
来 自:邯郸
等 级:
火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
第
24
楼
收藏
得分:0
回复 21楼 编译中。。
函数调用堆栈是这样的:
fatorial(4)
factorial(3)
factorial(2)
factorial(1)
return a
// from factorial(1), 1
return a
// from factorial(2), 2
return a
// from factorial(3), 6
return a
// from factorial(4), 24
清楚么?
2011-08-02 18:19
举报帖子
使用道具
赠送鲜花
编译中。。
来 自:中国
等 级:
黑侠
帖 子:198
专家分:511
注 册:2011-7-29
第
25
楼
收藏
得分:0
以下是引用
voidx
在2011-8-2 18:19:41的发言:
函数调用堆栈是这样的:
fatorial(4)
factorial(3)
factorial(2)
factorial(1)
return a
// from factorial(1), 1
return a
// from factorial(2), 2
return a
// from factorial(3), 6
return a
// from factorial(4), 24
清楚么?
能详细点不,
()里的值 因为什么 而 一直递减,详细点
当我感到些许疲倦时 便想躺在阳光下,小路旁 . 可这些往往都是奢望..
2011-08-02 18:23
举报帖子
使用道具
赠送鲜花
voidx
来 自:邯郸
等 级:
火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
第
26
楼
收藏
得分:0
函数第一次执行时,a == 4
即调用 factorial(4)
当执行到 a *= factorial(a - 1) 时,a - 1 == 3,
所以调用 factorial(3)
这时候,下面的 return a; 并不会执行,要等到 factorial(a - 1) 返回,a *= factorial(a - 1); 执行结束后,下面的 return a; 才会被执行。
而在执行 factorial(a - 1) 的过程中又会再次调用 factorial() 这个函数,直至 a == 1 为止
[
本帖最后由 voidx 于 2011-8-2 18:30 编辑
]
2011-08-02 18:26
举报帖子
使用道具
赠送鲜花
编译中。。
来 自:中国
等 级:
黑侠
帖 子:198
专家分:511
注 册:2011-7-29
第
27
楼
收藏
得分:0
回复 26楼 voidx
a *= factorial(a - 1) 时,
这里的时候
a不是等于 a *= factorial(a - 1)
那a应该是3*4==12
而下一次为什么又成了 3-1??
当我感到些许疲倦时 便想躺在阳光下,小路旁 . 可这些往往都是奢望..
2011-08-02 18:31
举报帖子
使用道具
赠送鲜花
编译中。。
来 自:中国
等 级:
黑侠
帖 子:198
专家分:511
注 册:2011-7-29
第
28
楼
收藏
得分:0
奥。我好像有点动了。
我 先 整理一下
调用 factorial(3)
时 a *= factorial(a - 1)
执行了吗?
[
本帖最后由 编译中。。 于 2011-8-2 18:36 编辑
]
当我感到些许疲倦时 便想躺在阳光下,小路旁 . 可这些往往都是奢望..
2011-08-02 18:32
举报帖子
使用道具
赠送鲜花
voidx
来 自:邯郸
等 级:
火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
第
29
楼
收藏
得分:0
当然啊,因为 a == 3 > 1 所以会再一次执行 a *= factorial(a - 1)。只不过这时候 a == 3,a - 1 == 2,所以调用的是 factorial(2)
2011-08-02 18:38
举报帖子
使用道具
赠送鲜花
编译中。。
来 自:中国
等 级:
黑侠
帖 子:198
专家分:511
注 册:2011-7-29
第
30
楼
收藏
得分:0
a与刚才的不是同一个?
因为执行了 a *= factorial(a - 1) 之后 a的值不就变大了?
a=4*factorial(4-1); 不是吗。a就变成了 12 了
为什么下次还会是 3-1==2 呢。
a 难道 是不同的?
当我感到些许疲倦时 便想躺在阳光下,小路旁 . 可这些往往都是奢望..
2011-08-02 18:42
举报帖子
使用道具
赠送鲜花
41
3/5页
1
2
3
4
5
快速回复:
不明白,要多问。
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.016748 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved