| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 344 人关注过本帖
标题:求教一道简单的题目
只看楼主 加入收藏
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:4 
求教一道简单的题目
fun(int x)
{
 if(x/2>0) fun(x/2-2);
 printf("%d",x);


}
main()
{
 fun(20);
 printf("\n");



}
结果是-12820
我知道函数调用了4次,但我不知道结果怎么来的,有高手可以帮忙解答下吗?详细点谢谢啦!!!
2009-07-23 15:05
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:20 
f(20)
{
    f(8);
   {
       f(2);
       {
            f(-1)
            {
                 //递归退出
                 printf(-1);
            }
            printf(2);
       }
       printf(8);

   }
    print(20)
}
所以输出是-12820(其实里面是4个数-1 2 8 20)

倚天照海花无数,流水高山心自知。
2009-07-23 15:11
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
收藏
得分:0 
函数定义中又调用函数本身,我不是很清楚它是怎么走的,高手们解答下,谢谢了!
2009-07-23 15:12
文武两边随
Rank: 2
等 级:论坛游民
帖 子:40
专家分:39
注 册:2009-7-23
收藏
得分:0 
哦 知道了谢谢!
2009-07-23 15:13
himpo
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:192
专家分:123
注 册:2008-5-16
收藏
得分:0 
递归调用.
开始f(20)调用f(8)
f(8)调用f(2)
然后f(2)调用f(-1)
f(-1)停止调用,然后逆向输出..

-12820
printf("%d",x);
这句改成printf("%d\n",x);就能比较清楚地看到过程.
2009-07-23 15:19
快速回复:求教一道简单的题目
数据加载中...
 
   



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

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