Обратите внимание, что WolframAlpha возвращает "Десятичное приближение". Если вам не нужна абсолютная точность, вы можете сделать то же самое, вычислив факториалы с приближением Стирлинга .
Теперь, приближение Стирлинга требует оценки (n / e) ^ n, где e - основание натурального логарифма, который будет безусловно самой медленной операцией. Но это можно сделать, используя методы, описанные в другой публикации stackoverflow .
Если вы используете двойную точность и повторное возведение в квадрат для выполнения возведения в степень, операции будут:
- 3 оценки приближения Стирлинга, каждая из которых требует O (log n) умножений и одного квадратного корня.
- 2 умножения
- 1 деление
Количество операций, вероятно, можно было бы уменьшить с некоторой сообразительностью, но общая сложность времени при этом подходе составит O (log n). Довольно управляемый.
РЕДАКТИРОВАТЬ: Там также обязательно будет много научной литературы по этой теме, учитывая, насколько распространены эти расчеты. Хорошая университетская библиотека может помочь вам отследить ее.
EDIT2: Кроме того, как указано в другом ответе, значения легко переполняются двойным, поэтому тип с плавающей запятой с очень высокой точностью потребуется использовать даже для умеренно больших значений k и n.