当前位置: 代码迷 >> C语言 >> [讨论]函数的递归调用问题?
  详细解决方案

[讨论]函数的递归调用问题?

热度:213   发布时间:2007-10-29 00:04:25.0
[讨论]函数的递归调用问题?

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

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

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

搜索更多相关的解决方案: 递归  函数  fun  int  

----------------解决方案--------------------------------------------------------
结果应该为0吧,个人见解!
----------------解决方案--------------------------------------------------------
结果不正确!  是函数的递归调用,多次~~
----------------解决方案--------------------------------------------------------
我运行结果是 1 3 6
递归调用我没学过,1我知道怎么来的,3和6就不知道了

----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
明天晚上在探讨,先睡了,明天还上课呢,我去问问我们老师哈;
晚安
----------------解决方案--------------------------------------------------------
以下是引用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编辑过]


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
支持7楼说明
注意深入理解递归在系统中是如何实现的
简单说就是 利用了栈 详细请看 严姐姐的数据结构一书 在说汉诺塔问题时 说明了
按栈去理解递归就很简单了
----------------解决方案--------------------------------------------------------
  相关解决方案