源代码:
#include <stdio.h>
#include <time.h>
clock_t start, stop;
double duration;
void print1(int n);
void print2(int n);
int main() {
int n;
scanf("%d", &n);
start = clock();
print1(n);
//print2(n);
stop = clock();
duration = ((double)(stop - start)) / CLK_TCK;
printf("%lf\n",duration);
return 0;
}
void print1(int n) {
if (n) {
print1(n-1);
printf("%d\n",n);
}
return;
}
void print2(int n) {
int i;
for (i=1; i<=n; i++) {
printf("%d ",i);
}
return;
}
感悟:
递归虽然用起来比较方便,但会占用大量的空间,该例子当n为100w时可以发现,循环输出会得到相应结果,但通过递归则程序会终止。原因就是递归将内存用尽,导致程序退出。