return 1;
else
return simple_factorial(i-1) * i;
}
int tail_factorial(int i, int n){
if(i==1 || i==0)
return n;
else
return tail_factorial(i-1, n*i);
Я же правильно понимаю, что суть хвостовой рекурсии в том, что компилятор понимает, что предыдущая функция tail_factorial не нужна при вызове следующей, и оптимизирует прогу, освобождая стек от предыдущей?
Чуть хвостовой рекурсии в том, что компилятор заменяет вызов функции на итерацию (прыжок в начало текущей функции)
Обсуждают сегодня