I almost understand how tail recursion works and the difference between it and a normal recursion. I only don\'t understand why it doesn\'t
The compiler is simply able to transform this
int fac_times (int n, int acc) { if (n == 0) return acc; else return fac_times(n - 1, acc * n); }
into something like this:
int fac_times (int n, int acc) { label: if (n == 0) return acc; acc *= n--; goto label; }