A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#include <stdio.h>
int a;
int add();
int main(int argc, const char * argv[]) {
    add();
    return 0;

}
int add(){

    a++;
    if(a>5){
        return 0;

    }
    printf("%d\n",a);
    add();
    return 0;
}


这个运行的结果是1 2 3 4 5.  然后请看下面


#include <stdio.h>
int a;
int add();
int main(int argc, const char * argv[]) {
    add();
    return 0;

}
int add(){

    a++;
    if(a>5){
        return 0;

    }
    printf("%d\n",a);

    return 0;

}

这个运行出来的结果是1

两者区别在最后的 add();  为什么没了add()不会循环??

5 个回复

正序浏览
yolande 来自手机 中级黑马 2015-12-28 12:26:59
地板
。。。你把add()放到打印少年,输出的序列会反过来,我会乱说
回复 使用道具 举报
因为没有add()之后第一次执行完printf()之后就立刻返回0结束了啊
回复 使用道具 举报
因为加了add()就再次调用本方法,调一次a就加1,直到a>5进入if语句跳出add(),不再执行后面代码;不加add()就直接到最后的return 0,a++ =1;
回复 使用道具 举报
15133444432 来自手机 中级黑马 2015-12-28 00:48:43
藤椅
因为你如果不加add()就不能构成递归...不会有循环输出
回复 使用道具 举报
不会哎. 教教我
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马