Основы функционального программирования/Структуры данных и базисные операции — 2: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 117:
<math>Factorial(0) = 1</math>
 
<math>Factorial(N) = N * Factorial(N - 1)</math>
 
Если провести пример вычисления этой функции с аргументом <math>3</matmath>, то можно будет увидеть следующую последовательность:
 
<math>Factorial(3)</math>
Строка 147:
<math>F(0, A) = A</math>
 
<math>F(N, A) = F((N - 1), (N * A))</math>
 
В этом примере второй параметр функции <math>F</math> выполняет роль аккумулирующей переменной, именно в ней содержится результат, который возвращается по окончании рекурсии. Сама же рекурсия в этом случае принимает вид «хвостовой», память при этом расходуется только на хранение адресов возврата значения функции.