以下程序运行后的结果是:
fun(int x)
{ if (x/2>0) fun(x/2);
printf("%d",x);
}
main()
{fun(6);
}
请大家看看这个题目,可以帮我分析下吗?(谢谢)
[此贴子已经被作者于2007-10-31 14:14:41编辑过]
*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 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编辑过]