Не буду напомнинать, что такое биномиальные коэффициенты. Суть проблемы вот в чем: допустим, я хочу вычислять биномиальные коэффициенты эффективно. Я использую такое рекурсивное определение
C(n,k+1) = (n-k)/(k+1) C(n,k)
Будучи реализовано в виде хвостовой рекурсии или итеративно, оно хорошо, работает, быстро и эффективно. Проблема вот в чем: Оно требует _рациональной_арифметики_, т.е. манипулирования дробями, хотя сами биномиальные коэффициенты — целые, что видно из их другого определения
C(n+1,k) = C(n,k) + C(n,k-1)
Можно, конечно, использовать именно это определение, но возникает дилемма: либо получить экспоненциально растущую рекурсию (как с числами Фибоначчи) и быстрое исчерпание стека, либо прикручивать таблицу памяти, тогда для вычисления достаточно большого биномиального коэффициента придется хранить кучу промежуточных коэффициентов.
Возникает вопрос вынесенный в заголовок: а есть ли способ вычисления биномиальных коэффицентов, более эффективный, чем треугольник Паскаля, но так же использующий только целочисленную арифметику?