ахренеть тут специалисты собрались поговорить о хвостовой рекурсии тема находится яндексом, поэтому чтоб сеть не засорялась мусором, пришлось зарегистрироваться и комментарий оставить
хвостовая рекурсия:
https://ru.wikiped …iki/Хвостовая_рекурсия
ваш код для факториала в wiki приводится дословно как пример
"простой рекурсивной функции, которая не является хвостово-рекурсивной и не может быть автоматически преобразована в итеративную"
ну, понятно что это общий случай. на частные случае оптимизатор можно "натаскать"
исходный код POV-a тоже и близко не является хвостовой рекурсией.
На пальцах: хвостовая рекурсия возвращает сам рекурсивный вызов, а не функцию от него. Факториал возвращает *, а пример POV-a возвращает конкатенацию строк.
код с использованием хвостовой рекурсии всегда (практически) требует параметра-аккумулятора
пример для факториала из вики:
int fac_times (int n, int acc) {
return (n==0) ? acc : fac_times(n - 1, acc * n);
}
int factorial (int n) {
return fac_times (n, 1);
}