How 'smart' is GCC's Tail-Call-Optimisation?
问题 I just had a discussion where the following two peices of C code were being discussed: For-Loop: #include <stdio.h> #define n (196607) int main() { long loop; int count=0; for (loop=0;loop<n;loop++) { count++; } printf("Result = %d\n",count); return 0; } Recursive: #include <stdio.h> #define n (196607) long recursive(long loop) { return (loop>0) ? recursive(loop-1)+1: 0; } int main() { long result; result = recursive(n); printf("Result = %d\n",result); return 0; } On seeing this code, I saw