Это очень просто, так как мы можем использовать правила подстановки. Например.
factorial(10); // ==
(10 > 1) ? factorial(10 - 1) : 1 // ==
(9 > 1) ? factorial(9 - 1) : 1 // ==
(8 > 1) ? factorial(8 - 1) : 1 // ==
(7 > 1) ? factorial(7 - 1) : 1 // ==
(6 > 1) ? factorial(6 - 1) : 1 // ==
(5 > 1) ? factorial(5 - 1) : 1 // ==
(4 > 1) ? factorial(4 - 1) : 1 // ==
(3 > 1) ? factorial(3 - 1) : 1 // ==
(2 > 1) ? factorial(2 - 1) : 1 // ==
(1 > 1) ? factorial(1 - 1) : 1 // ==
1
Ваша функция нарушена. Он не умножает n на результат факториала (n - 1). Вы также можете сделать это с аккумулятором, чтобы он стал хвостовой рекурсией, но вы не можете просто заменить его на factorial(n - 1)
, так как он не будет вычислять то же самое, что и factorial(n)
.