
1. Обыкновенная рекурсивная реализация. Согласно общерекурсивной формуле fact(n) = n * fact(n-1), легко написать код расчета факториала.
Преимущество обычной рекурсивной реализации состоит в том, что код относительно краток, а тот же процесс, что и общая формула, упрощает понимание кода. Недостаток заключается в том, что из-за необходимости частого вызова самого себя требуется большое количество операций push и pop, а общая эффективность вычислений невысока.
функция факт(int $n): int
{
если ($n == 0) {
возврат 1;
}
вернуть $n * факт($n - 1);
}2. Обычная реализация цикла имеет некоторую разновидность динамического программирования, но из-за низкой частоты использования переменных промежуточного состояния не требуется дополнительного места для хранения.
Поэтому он проще, чем общий алгоритм динамического программирования. Обычный рекурсивный метод представляет собой процесс вычислений сверху вниз (от n до 1), тогда как обычный цикл представляет собой расчет снизу вверх.
функция факт(int $n): int
{
$результат = 1;
$номер = 1;
в то время как ($num <= $n) {
$результат = $результат * $num;
$номер = $номер + 1;
}
вернуть $результат;
}Выше приведен метод реализации факториала n в php. Надеюсь, он будет полезен всем.