Pull to refresh
0
0
Send message
Как говорят «вставлю и я своих 5 копеек», возможно это кому то пригодится.
Как и в моделировании физических процессов для научных робот так и для симуляции в играх неоспоримо важна скорость не теряя точности.
В данном случае, алгоритм вычисления факториала имеет свой большой «плюс» — очень прост и понятен, и не отвлекает от главной цели статьи.
Но, все же, если хотите ускорить или оптимизировать его расчет можно воспользоваться Гамма-функцией (там все очень просто) и двумя аппроксимированными формулами Стирлинга (Stirling) и Рамануджана (Ramanujan).
Замечу, что точное значение они рассчитывают до 11 (Ст.) и 9 (Рам.) соответственно. И вроде бы формула Стирлинга дает лучшее быстродействие.
Что бы «облегчить жизнь», даю ссылку на код C# по вычислению факториала: . Unit-тесты прилагаются и замеры скорости вычисления с помощью разных способов, в том числе реализацию через указатели и небезопасный код и многопоточность при расчете массива факториалов.
Также, замечу, что
написать свой тип
не нужно, в C# уже давно есть для этого такой тип как BigInteger (неизменяемый), которому не страшны никакие переполнения. А вот и ссылка на него . Я его также реализовал в коде.
Чем смог тем помог, пользуйтесь на здоровье! Удачи!

Information

Rating
Does not participate
Registered
Activity