递归对空间的占用很严重,如果数据非常大的话,数据空间已经不能满足要求了,则空间就爆掉了,无法完成应有的操作,即非正常终止,跳出程序。
如视频中所讲的打印1-N的数字。
利用递归实现代码如下:
#include<stdio.h>
void printfN(int N){
if(N){
printfN(N-1);
printf("%d\n",N);
}
}
int main(){
int N;
scanf("%d",&N);
printfN(N);
}
在测试数据为10W时,空间直接爆掉,无法输出。在有空间限制的题目中,很有可能会超出内存。
利用for循环实现代码如下:
#include<stdio.h>
int main(){
int N;
scanf("%d",&N);
for(int i=1;i<=N;i++){
printf("%d\n",i);
}
}
虽然for循环需要一定的时间,在有时间限制的题目中,可能会超时,但是数据还是完好的可以输出的。