您的位置:首页 > 编程语言 > C语言/C++

C语言 递归函数的一些测试

2016-10-30 11:45 148 查看
我经常会被一些看似复杂的结构混淆,静下心来想想,其实只不过是一种简单结构换了一种表现形式或者是结构特殊化了,它的本质是永远不会变的,按照以往的思路去思考,问题总是会带给你收获。

做这个题目之前之前对递归也不是太懂,还好遇见了你。

/题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

void item11(int num){
int i,j;

for(i=2;i<num;i++){
if(num%i==0){
printf("%d*",i);
item11(num/i);
printf("hahahahahaha");
printf("%d\n",num);
break;
}
}
if(i>=num)printf("%d",num);

}


item11(int num) 应该叫一个递归函数,我以前有一个疑惑:如果递归函数下面还有语句要执行的话,那么它会是一个什么情况呢?

是调用完一次递归函数就执行下一句吗?还是直接就不调用了。

这个测试的输出是



那我就可以判断 整个递归调用结束之后才会回来执行接下去的语句,哇,感觉好复杂啊,根本看不清为什么,脑子一片混乱。

然后我又写了几句代码

#include<stdio.h>

void test(){
printf("Hello,World");
}
main(){
test();
printf("Hello,swfq");
}


这个我肯定知道啊, 先输出 Hello,World啊,等到test()执行完毕之后 在输出 Hello,swfq。

那为什么是从里往外开始调用的?(为什么从15到45到90)

#include<stdio.h>

void test(){
printf("Hello,World");
test1();
printf("Hello,nicer");
}

void test1(){
printf("Hello,wzjssss");
}
main(){
test();
printf("Hello,swfq");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 递归