Как стать автором
Обновить

Комментарии 18

Я почти минусанул этот пост. Ну ё-моё, домножить числитель и знаменатель на n и делать из этого открытие — это за гранью добра и зла.

Аналогично, разложить факториал в правой части и сократить на n — и это «сбило автора с толку» и заставило «бросить свои дела, схватить блокнот и проверить форулу»?
Будем до конца откровенны: примерно первая половина поста в целом ни о чём.

Вторая оправдывает его лишь отчасти.

В «бросить свои дела, схватить блокнот и проверить форулу» ничего плохого нет. Но писать статью о простых арифметических операциях не разобрашись — уже нет.
n / (n — 1) / (n — 2) /… / 1 = n ^ 2 / n / (n — 1) / (n — 2) /… / 1
Все вполне очевидно.
Вот мой любимый алгоритм для вычисления факториалов

Не учитывается 0!
давайте изменим это определение и преобразуем единственное вхождение * в /, оставив всё остальное неизменным (за исключением названия функции).

Вот почему программистов иногда так хают, что слов нет. Не умеет чел в математику, а пытается оптимизировать хвостовую рекурсию. Операция деления не является коммутативной, поэтому он закодил вычисление n/((n-1)/((n-2)/((...1)))...). При этом ошибку свою он таки не осознал!


А вообще, если в факториале делить, получится 1/n!, потому что вычислять-то надо с единицы. По определению, факториал натурального числа N есть произведение чисел от 1 до N, т.е. писать надо 1*2*3*...*N. И если делить вот здесь, мы получим 1/2/3/.../N == 1/(N!)


...


Хотя — надо было читать всё, а не скроллить до кода сразу. Всё тут есть, и i^2/N! и некоммутативность деления. Остается только нетерпеливость комментатора и триггер-фраза в середине текста. ОК, уели.

Операция деления не является коммутативной

Если строго, все опреации с плавающей точкой не коммутативны. Обычно это не важно, но в некоторых случае может проявляться. Например, когда первый аргумент — почти ноль, а второй — очень большой. Также ошибка может накапливаться.


По определению, факториал натурального числа N есть произведение чисел от 1 до N

А вообще факториал — всего лишь частный случай гамма-функции :)


n! = Γ(n + 1)
Это компьютерные. Математические — некоторые таки коммутативны.
Не умеет чел в математику, а пытается оптимизировать хвостовую рекурсию. Операция деления не является коммутативной,

Операция деления не является ассоциативной :)
Биологи после долгих исследований выяснили что муравьи строят муравейники таким образом, что отношение окружности муравейника к диаметру близко к трем.

Вот тут примерно то же самое, но с программистом. Человек написал n!!/(n-1)!!! и удивился появлению степеней двоек.
Простите, а с какого момента n! считается «степенной функцией»? (Факториал растёт быстрее показательной функции.) Я понимаю, что это перевод, но как же насчет «прим. перев.»?

Чисто на полях. Из интересного.

Мне больше нравятся праймориалы, а еще больше.... М-м-м. Пусть будут бейсориалы. Это произведения всех простых в степенях 2^k, потому что из них можно собрать битовую матрицу, когда каждое базовое число входит в произведение только один раз (без дополнительных степеней). Ну и их еще можно записывать в показательной форме. Все базовые числа получаются как 1B19 например. Не без проблем все это, конечно, потому что нужны индексы по последовательным степеням p и вообще кластерный индекс по последовательным числам.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории