黑马程序员技术交流社区
标题: 求大神看,实现一个函数调用本身不会处出现死递归的案列 [打印本页]
作者: zzt244 时间: 2015-12-27 23:22
标题: 求大神看,实现一个函数调用本身不会处出现死递归的案列
#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()不会循环??
作者: holmesconan 时间: 2015-12-28 00:20
不会哎. 教教我
作者: 15133444432 时间: 2015-12-28 00:48
因为你如果不加add()就不能构成递归...不会有循环输出
作者: peiyu 时间: 2015-12-28 00:51
因为加了add()就再次调用本方法,调一次a就加1,直到a>5进入if语句跳出add(),不再执行后面代码;不加add()就直接到最后的return 0,a++ =1;
作者: HHE_johnson 时间: 2015-12-28 08:29
因为没有add()之后第一次执行完printf()之后就立刻返回0结束了啊
作者: yolande 时间: 2015-12-28 12:26
。。。你把add()放到打印少年,输出的序列会反过来,我会乱说
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |