| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 510 人关注过本帖
标题:帮忙看下递归函数!
只看楼主 加入收藏
iqyuankong
Rank: 2
等 级:论坛游民
帖 子:68
专家分:10
注 册:2009-10-23
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:2 
帮忙看下递归函数!
#include<stdio.h>
fun(int x)
{
    if(x/2==0) return 1;     /*  这里返回的值是给那个函数 */
    else
    {printf("%d",fun(x/2));
    return x%2;}           /*  这里返回的值是给那个函数 */
}


int main()
{
    int x;
    scanf("%d",&x);
    printf("%d\n",fun(x));     /*  这里printf有没有输出?*/
    return 0;
}
程序的输出过程请帮忙讲解下!
搜索更多相关主题的帖子: 函数 递归 
2010-01-07 21:59
xiaotutu6000
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:85
专家分:137
注 册:2009-10-30
收藏
得分:20 
我就帮你跑一遍~
printf函数是从左向右执行的,执行fun(x)这时还没打印;
我输入x的值为6;1.进入函数,6/2=3    3!=0    执行else 2. 在次进入fun(x)函数 (这时x=6/2)  3/2=1   1!=0 执行else   3.在次进入fun(x)函数(这时x=3/2)  
1/2=0   0==0  进入if 把   1 返回给第3次进入的fun函数,打印出1   返回1%2=1 给第2次进入的fun函数,打印出1 ;第二次进入时x为6,返回6%2=0,给主函数,
打印出0
最终为 110
2010-01-07 22:43
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
收藏
得分:0 
其实递归函数是吧得到的结果放到栈中,先进后出!

[ 本帖最后由 小J 于 2010-1-7 23:30 编辑 ]
2010-01-07 23:21
快速回复:帮忙看下递归函数!
数据加载中...
 
   



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

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