关于 for 循环 和 递归调用 哪个更优化
#include <stdio.h>
#include <time.h>
#include <math.h>
clock_t start, stop;
int main() {
double methodOne(int n);
double methodTwo(int n);
double one, two;
start = clock();
methodOne(1e5);
stop = clock();
one = ((double) (stop - start))/CLK_TCK;
start = clock();
methodTwo(1e5);
stop = clock();
two = ((double) (stop - start))/CLK_TCK;
printf("运行时间:%f\n", one);
printf("运行时间:%f\n", two);
}
void methodOne(int n) {
for(int i = n; i >= 0; i--) {
printf("%d\n", i);
}
return ;
}
void methodTwo(int n) {
if(n != 0) {
printf("%d\n", n);
methodTwo(n - 1);
}
}
结果

显而易见,for 循环 比 递归调用 的时间少;不仅这样,每递归调用一次都得进行分配内存,而 for 循环是每循环一次分配内存的同时会销毁一个内存,这个是由于 i-- 导致的,准确说是由于语言的特性导致的。