Выполнив следующий код
Код:
f1[n_] := Block[{m = 1, i}, For[i = 1, i <= n, i++, m = m*i]; m]
f2[n_] := Apply[Times, Range[n]]
f3[n_] := Product[i, {i, 1, n}]
Timing[f1[50000];]
Timing[f2[50000];]
Timing[f3[50000];]
Timing[Factorial[50000];]
Получим
Код:
{3.3125, Null}
{0.125, Null}
{0.140625, Null}
{0.03125, Null}
Как видно, скорость выполнения отличается. Если еще и можно предположить, что для команды Factorial имеются заготовленные значения, то почему в остальных случаях время выполнения команды отличается? По сути, нам же надо выполнить умножение
раз.
А если программировать на другом языке программирования, как добиться такой хорошей скорости вычисления факториала?