Факториал входа
f = factorial(n)
f = factorial(
возвращает продукт всех положительных целых чисел, меньше чем или равных n
)n
, где n
является неотрицательным целочисленным значением. Если n
является массивом, то f
содержит факториал каждого значения n
. Тип данных и размер f
совпадают с типом данных n
.
Факториал n
обычно написан в математическом обозначении с помощью символа восклицательного знака в качестве n!. Обратите внимание на то, что n!
не является допустимым синтаксисом MATLAB® для вычисления факториала n
.
Ограничения
Для входных параметров с двойной точностью результат точен, когда n
меньше чем или равен 21
. Большие значения n
приводят к результату, который имеет правильный порядок значения и точен для первых 15 цифр. Это вызвано тем, что числа с двойной точностью только точны до 15 цифр.
Для входных параметров с одинарной точностью результат точен, когда n
меньше чем или равен 13
. Большие значения n
приводят к результату, который имеет правильный порядок значения и точен для первых 8 цифр. Это вызвано тем, что числа с одинарной точностью только точны до 8 цифр.
Насыщение
Приведенная ниже таблица описывает поведение насыщения каждого типа данных, когда используется с функцией factorial
. Значения в последнем столбце указывают на точку насыщения; то есть, первое положительное целое число, фактический факториал которого больше, чем максимальное представимое значение в среднем столбце. Для single
и double
, все значения, больше, чем максимальное значение, возвращены как Inf
. Для целочисленных типов данных степень насыщения равна максимальному значению в среднем столбце.
Тип данных | Максимальное значение | Факториальный порог насыщения |
---|---|---|
double | realmax | factorial(171) |
single | realmax('single') | factorial(single(35)) |
uint64 | 264-1 | factorial(uint64(21)) |
int64 | 263-1 | factorial(int64(21)) |
uint32 | 232-1 | factorial(uint32(13)) |
int32 | 231-1 | factorial(int32(13)) |
uint16 | 216-1 | factorial(uint16(9)) |
int16 | 215-1 | factorial(int16(8)) |
uint8 | 28-1 | factorial(uint8(6)) |
int8 | 27-1 | factorial(int8(6)) |