Здравствуйте, ДимДимыч и marat321, Вы писали:
ДД>>Почему зависание? Через некоторое время калькулятор пишет "Для завершения работы выбранной функции потребуется много времени. Продолжить расчеты или прервать сейчас?" и предлагает продолжить или остановить. Я бы, конечно, еще вынес вычисления в отдельную от GUI нить.
M>Или вообще для достаточно больших n делать оценку факториала по формуле Стирлинга.
Кхм. Поскольку топикстартер зависания не ожидал, смело предположу, что таки да, виндописатели опять лажанулись. Дело в том, что символ "!!" — это двойной факториал, и определяется он как произведение всех натуральных чисел в отрезке [1, n], имеющих ту же чётность что и n:
(Как следствие — нефиг торопиться что-то посчитать, как только юзверь ткнул восклицательный знак.)
Таким образом, 9!! = 1 * 3 * 5 * 7 * 9 = 945. Т.е. вычисление занимает в два раза меньше времени, нежели обычного факториала для 9 и стирлинг тут немного не при делах

Учите математику, мои маленькие любители программирования, и будет вам щасте