Чтобы вычислить факториал числа в OCaml, вы можете использовать несколько методов. Вот несколько примеров кода:
-
Рекурсивный метод:
let rec factorial n = if n <= 1 then 1 else n * factorial (n - 1)
Этот метод использует рекурсию для вычисления факториала. Если число
n
меньше или равно 1, оно возвращает 1. В противном случае оно умножаетn
на факториалn - 1
. -
Метод хвостовой рекурсии:
let factorial n = let rec factorial' acc = function | 0 -> acc | n -> factorial' (n * acc) (n - 1) in factorial' 1 n
Этот метод использует хвостовую рекурсию, которая позволяет избежать переполнения стека при больших входных данных. Он накапливает значение факториала в параметре
acc
до тех пор, покаn
не достигнет 0. -
Итеративный метод:
let factorial n = let result = ref 1 in for i = 2 to n do result := i * !result done; !result
Этот метод использует цикл для итеративного вычисления факториала. Он инициализирует изменяемую ссылку
result
значением 1 и умножает ее на каждое число от 2 доn
.
Обратите внимание, что OCaml чувствителен к регистру, поэтому при написании фрагментов кода обязательно используйте правильные заглавные буквы.