Разумность проверить мою функцию факториала JavaScript для Google Sheets? - PullRequest
0 голосов
/ 28 августа 2018

Мне нужно вычислить факториалы для большей функции в моей таблице (cdf для гипергеометрических вероятностей). Я перепробовал множество способов, которые были описаны в разных постах, но ни один из них не дал мне правильного результата. Если я подключу (3), я получу (2), что не имеет смысла для меня. Может кто-нибудь объяснить, что я делаю не так?

Кроме того, из того, что я прочитал, я столкнусь с проблемами с большими факториалами, потому что JavaScript не может хранить очень большие числа? Я видел одно решение, предлагающее использовать строки для представления больших целых чисел, но выглядит очень сложно ... Есть идеи по более простому способу решения этой проблемы?.

Факторная функция:

function MyFac(x) {    
    var fac=x;
    var i=1;

    while (i<x) {        
        fac=fac*i;
        i++;        
    }        

    return fac;        
}

1 Ответ

0 голосов
/ 28 августа 2018

Где исправление вашего кода:

function MyFac(x) {    
    var fac=x;

    while (x>1) {        
        x--;        
        fac=fac*x;
    }        

    return fac;        
}

console.log(MyFac(5))
console.log(MyFac(4))
console.log(MyFac(3))
console.log(MyFac(2))

Вы можете найти гораздо лучшие реализации факториала здесь:

Быстрая факторная функция в JavaScript

...