2015-02-16 2 views
0

Ниже код написан на javascript, и он отлично работает для определенного предела диапазона. Я хочу проверить его на диапазон 2 миллиона и он показывает результат как бесконечность? Как обрабатывать сумму больших чисел в javascript?Сумма четного числа рядов фибоначчи, начиная с 1,2,3 ... в javascript?

function fibanocci(n){ 
    var first = 1; 
    var second = 2; 
    var next = 0; 
    var sum = 2; 
    for(var i=0;i<n-2;i++){ 
     next = first+second; 
     first = second; 
     second = next; 
     if(next%2==0){ 
      sum = sum+next; 
     } 
    } 
    console.log(sum); 
} 
+0

Вы, очевидно, не можете хранить эти большие числа в JavaScript-номере, вам нужна реализация целочисленного целого. – meskobalazs

+0

Последовательность Фибоначчи экспоненциальна. Вы уверены, что хотите получить сумму первых 2 миллионов номеров (порядка порядка полумиллиона цифр) или просто сумму всех чисел ниже 2 миллионов? – Phylogenesis

+0

, если вам действительно нужны большие большие большие числа, попробуйте что-то вроде http://silentmatt.com/biginteger/ – Tschallacka

ответ

0

С числом, большим, вы, вероятно, поражающего максимальный размер номера. this answer говорит, что наибольшее число javascript может иметь дело с 9007199254740992. Я полагаю, что что-то выше этого может привести к бесконечности.

+0

Это самое большое целое число, которое можно удерживать. Помимо этого, он переключается на 64-битное двойное представление, которое может хранить до примерно 1e308 с 15 цифрами точности. – Phylogenesis

+0

Я на самом деле не переключаюсь, это всегда двойной IEEE754 в соответствии со спецификацией ECMAScript. Это всего лишь поворотный момент, когда целые числа более безопасно не представляются. – meskobalazs

0

Если вам действительно нужно работать с такими огромными числами, вы должны рассмотреть возможность использования реализации BigInteger для JavaScript, как this one, как самый большой безопасно представимому целое в JavaScript Number является 2^53-1 = 9007199254740992.

Смежные вопросы