| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1346 人关注过本帖
标题:[讨论]函数的递归调用问题?
只看楼主 加入收藏
hanzhu3366
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:741
专家分:3
注 册:2007-10-12
结帖率:100%
收藏
 问题点数:0 回复次数:20 
[讨论]函数的递归调用问题?

以下程序运行后的结果是:
fun(int x)
{ if (x/2>0) fun(x/2);
printf("%d",x);
}
main()
{fun(6);
}

请大家看看这个题目,可以帮我分析下吗?(谢谢)

[此贴子已经被作者于2007-10-31 14:14:41编辑过]

搜索更多相关主题的帖子: 递归 函数 fun int 
2007-10-29 00:04
sgliang1988
Rank: 1
来 自:西安
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-9-20
收藏
得分:0 
结果应该为0吧,个人见解!

认真的对待每一天!
2007-10-29 00:26
hanzhu3366
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:741
专家分:3
注 册:2007-10-12
收藏
得分:0 
结果不正确!  是函数的递归调用,多次~~

偶滴淘宝小店,主要经营女装、男装、话费充值哦http://hanzhu3366.taobao. com
2007-10-29 00:35
sgliang1988
Rank: 1
来 自:西安
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-9-20
收藏
得分:0 
我运行结果是 1 3 6
递归调用我没学过,1我知道怎么来的,3和6就不知道了

认真的对待每一天!
2007-10-29 00:40
hanzhu3366
Rank: 1
来 自:湖北武汉
等 级:新手上路
帖 子:741
专家分:3
注 册:2007-10-12
收藏
得分:0 

答案是 1 3 6
我也不知道怎么来的,好像多次调用,要是头转快点就好啦


偶滴淘宝小店,主要经营女装、男装、话费充值哦http://hanzhu3366.taobao. com
2007-10-29 00:45
sgliang1988
Rank: 1
来 自:西安
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-9-20
收藏
得分:0 
明天晚上在探讨,先睡了,明天还上课呢,我去问问我们老师哈;
晚安

认真的对待每一天!
2007-10-29 00:49
缘吇弹
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:43
帖 子:3038
专家分:27
注 册:2007-7-2
收藏
得分:0 
以下是引用hanzhu3366在2007-10-29 0:04:25的发言:

*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: hanzhu3366 QQ:136514900
*/ 时间: 2007-10-29 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------


以下程序运行后的结果是:
fun(int x)
{ if (x/2>0) fun(x/2);
printf("%d",x);
}
main()
{fun(6);
}

请大家看看这个题目,可以帮我分析下吗?(谢谢)

一共递归调用了3次.
工作过程可看成这样:
1. 当fun(6)时,满足(x/2>0) 调用fun(x/2)也就是调用fun(3) //注意,满足条件(x/2>0)执行fun(3),要等执行了fun(3)才执行fun(6)的printf语句;
2.执行fun(3)时,也满足(x/2>0) 调用fun(x/2)也就是调用fun(1) //注意,满足条件(x/2>0)执行fun(1),要等执行了fun(1)才执行fun(3)的printf语句;
3.执行fun(1)时,不满足(x/2>0),就跳到下边执行printf("%d",x);
所以执行顺序为:
fun(1)的x=1;
fun(3)的x=3;
fun(6)的x=6;
故输出136



[此贴子已经被作者于2007-10-29 1:26:40编辑过]


Repeat  Life=Study;Until (death);
2007-10-29 01:25
缘吇弹
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:43
帖 子:3038
专家分:27
注 册:2007-7-2
收藏
得分:0 

计算机可不像人那样,会遗漏什么.
有时候人也应该要学习计算机的严谨.


Repeat  Life=Study;Until (death);
2007-10-29 01:28
zshkc
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-10-25
收藏
得分:0 

版主分析的很清楚了,原来递归原理是这样的!!

2007-10-29 01:35
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 
支持7楼说明
注意深入理解递归在系统中是如何实现的
简单说就是 利用了栈 详细请看 严姐姐的数据结构一书 在说汉诺塔问题时 说明了
按栈去理解递归就很简单了

计算机之路是痛苦并快乐着的!!
2007-10-29 01:38
快速回复:[讨论]函数的递归调用问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012536 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved