| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:关于自身递归的疑惑
取消只看楼主 加入收藏
ybyc9999
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2015-1-24
结帖率:90%
收藏
已结贴  问题点数:20 回复次数:4 
关于自身递归的疑惑
#include <stdio.h>
void dec_bin(const int x){
     if(x/2>0){
         dec_bin(x/2);
         printf("%d",x%2);
     }
     else
         printf("%d",x);
}

int main(void){
    int data=0;
    printf("Please input a number:");
    scanf("%d",&data);

    printf("The %d's binary mode is:",data);
    dec_bin(data);
    printf("\n");
    return 0;
}

程序第四行掉用自身之后,还会执行第五行的printf语句吗?
我的理解是,第四行调用自身后,然后直接又从第四行开始执行了?

搜索更多相关主题的帖子: include number return 五行 
2015-01-24 10:20
ybyc9999
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2015-1-24
收藏
得分:0 
回复 2楼 wmf2014
恩,谢谢,现在还有两个问题
1、dec_bin这个函数没有返回值,main函数调用的话会不会有问题
2、如果我输入10的话,按程序执行顺序应该得出结果0101,但是实际输出是1010,这个不太理解
2015-01-24 11:02
ybyc9999
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2015-1-24
收藏
得分:0 
回复 4楼 wmf2014
第4行和第5行,是先调用函数然后执行printf程序的话,那会一直先调用这个函数,然后执行到第4行又会重新调用,那么永远都执行不到第5行了。
照这样理解的话就出错了,为什么程序还能正确执行。
2015-01-24 12:09
ybyc9999
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2015-1-24
收藏
得分:0 
回复 6楼 wmf2014
函数一级级的返回的话,那么打印的顺序就是逆向打印了吗?
可以这样理解么,调用的话是一级一级调用,从最后返回的时候就开始执行printf语句了,然后一直执行到最初调用的地方吗?


[ 本帖最后由 ybyc9999 于 2015-1-24 13:38 编辑 ]
2015-01-24 13:36
ybyc9999
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2015-1-24
收藏
得分:0 
回复 8楼 wmf2014
终于搞明白了,谢谢
2015-01-24 14:33
快速回复:关于自身递归的疑惑
数据加载中...
 
   



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

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