我经常会被一些看似复杂的结构混淆,静下心来想想,其实只不过是一种简单结构换了一种表现形式或者是结构特殊化了,它的本质是永远不会变的,按照以往的思路去思考,问题总是会带给你收获。
做这个题目之前之前对递归也不是太懂,还好遇见了你。
/题目:将一个正整数分解质因数。例如:输入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");
}