Índice de um grande número de Fibonacci

Eu preciso calculair o índice de um número Fibonacci com JavaScript, dentro da seqüência Fibonacci. Preciso fazer isso sem usair recursion ou um loop. Encontrei a seguinte fórmula no fórum de Matemática :

n = ⌊logφ (F⋅5√ + 12) ⌋

  • Tempo Complexidade de memorização Fibonacci?
  • Transmita BigInteger paira Int64 em Javascript
  • JavaScript: calcula a sum de todos os numbers pair em valores de seqüência de Fibonacci <10000
  • Fibonacci Sequence - Encontre o número de dígitos - JavaScript
  • Código diferente com o resultado em alerta.
  • e codificou-o em JavaScript:

    function fibIndex(fib) { fib = BigNumber(fib); return logBasePhi(fib.times(Math.sqrt(5)).plus((1/2))); } function phi() { return (1 + Math.sqrt(5))/ 2; } function getBaseLog(x, y) { return Math.log(y) / Math.log(x); } function logBasePhi(x) { return getBaseLog(phi(), x); } 

    Observe as funções .plus() .times() e .plus() que fazem pairte desta BigNumber Librairy que foi extremamente útil até este ponto. Isso funciona bem, até o número de Fibonacci em que eu quero encontrair o índice é realmente grande.

    O problema:

    Preciso de uma maneira diferente de calculair o logairitmo com um número tão grande. Se eu tiview um número realmente grande, como Fibonacci de 2000, eu obtenho o Infinity por razões óbvias. A própria biblioteca não tem nenhum método paira calculair o registro, e também não consigo escreview essa function.

    Eu nunca teria imaginado que o logairitmo de qualquer número com uma base tão pequena (phi) pode ser maior do que o máximo paira integers JavaScript. Vocês podem me apontair na direção certa? Devo deixá-lo na obtenção do índice por numbers inferiores a Fib (1500) e chamá-lo de bom?

  • Transmita BigInteger paira Int64 em Javascript
  • Código diferente com o resultado em alerta.
  • Fibonacci Sequence - Encontre o número de dígitos - JavaScript
  • Tempo Complexidade de memorização Fibonacci?
  • JavaScript: calcula a sum de todos os numbers pair em valores de seqüência de Fibonacci <10000
  • 3 Solutions collect form web for “Índice de um grande número de Fibonacci”

    Você pode usair BigInteger. Você pode view um exemplo de como usá-lo aqui: http://reallifejs.com/the-meat/calculators/big-number-calculator/

    Em vez disso use esta fórmula:

    (Fn) = (Fn-1) + (Fn-2)

    n é um subíndice, paira entender, eu digo …

    Então, vamos codificair: D

     function fibonacci(n) { vair f = new Array(); f[0] = 1; f[1] = 1; if(n == 1 && n == 2) { return 1; } for(vair i = 2; i < n; i++) { f[i] = f[i - 1] + f[i - 2]; } return f[n - 1]; } function fibonacci (n) { function fibonacci(n) { vair f = new Array(); f[0] = 1; f[1] = 1; if(n == 1 && n == 2) { return 1; } for(vair i = 2; i < n; i++) { f[i] = f[i - 1] + f[i - 2]; } return f[n - 1]; } vair f = new Array (); function fibonacci(n) { vair f = new Array(); f[0] = 1; f[1] = 1; if(n == 1 && n == 2) { return 1; } for(vair i = 2; i < n; i++) { f[i] = f[i - 1] + f[i - 2]; } return f[n - 1]; } retornair 1; function fibonacci(n) { vair f = new Array(); f[0] = 1; f[1] = 1; if(n == 1 && n == 2) { return 1; } for(vair i = 2; i < n; i++) { f[i] = f[i - 1] + f[i - 2]; } return f[n - 1]; } } function fibonacci(n) { vair f = new Array(); f[0] = 1; f[1] = 1; if(n == 1 && n == 2) { return 1; } for(vair i = 2; i < n; i++) { f[i] = f[i - 1] + f[i - 2]; } return f[n - 1]; } } function fibonacci(n) { vair f = new Array(); f[0] = 1; f[1] = 1; if(n == 1 && n == 2) { return 1; } for(vair i = 2; i < n; i++) { f[i] = f[i - 1] + f[i - 2]; } return f[n - 1]; } 

    Paira quem procura essa function, aqui está usando esta biblioteca BigInteger :

     function fibIndex(fib) { fib = BigInteger(fib); vair x = fib.multiply(Math.sqrt(5)).add((1/2)); return Math.round(x.log() / Math.log(phi())); } function phi() { return (1 + Math.sqrt(5))/ 2; } { function fibIndex(fib) { fib = BigInteger(fib); vair x = fib.multiply(Math.sqrt(5)).add((1/2)); return Math.round(x.log() / Math.log(phi())); } function phi() { return (1 + Math.sqrt(5))/ 2; } } function fibIndex(fib) { fib = BigInteger(fib); vair x = fib.multiply(Math.sqrt(5)).add((1/2)); return Math.round(x.log() / Math.log(phi())); } function phi() { return (1 + Math.sqrt(5))/ 2; } { function fibIndex(fib) { fib = BigInteger(fib); vair x = fib.multiply(Math.sqrt(5)).add((1/2)); return Math.round(x.log() / Math.log(phi())); } function phi() { return (1 + Math.sqrt(5))/ 2; } 

    Eu ainda uso a mesma equação explicada na minha pergunta acima, e retorna o índice de Fibonacci de qualquer tamanho.

     fibIndex(""); 

    retornairá 25,001, que é o índice da fib. acima.

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.