Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

173
Vistas
¿Cómo implementar una secuencia de Fibonacci en JavaScript?

Necesito implementar una secuencia de Fibonacci Оa través de una función para mi tarea. Y necesito implementar una función para que cada llamada posterior genere el siguiente número en la secuencia. Parece simple si pasa un argumento a la función, pero la asignación no me permite hacerlo. He implementado esta función con un argumento, el código se muestra a continuación:

 function helperFibonacci(n) { let number1 = 0; let number2 = 1; for (i = 0; i < n; i++) { let current = number1 + number2; number1 = number2; number2 = current; console.log(current); } } helperFibonacci(2);

Por favor, ayúdame a implementar esta función sin pasar un argumento. ¡Gracias!

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Cambie number1 y number2 a variables globales y elimine el bucle.

 let number1 = 0; let number2 = 1; function helperFibonacci() { let current = number1 + number2; number1 = number2; number2 = current; console.log(current); } for (let i = 0; i < 10; i++) { helperFibonacci(); }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Prueba con este, funciona muy bien, ten una buena codificación :)

 function fib(n) { let fibList = []; if (n < 2) { fibList.push(0); } else { let prev = 0; let curr = 1; fibList.push(prev, curr); for (let i = 2; i < n; i++) { const next = prev + curr; prev = curr; curr = next; fibList.push(curr); } } console.log(fibList); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

OPCIÓN 1 USO DE LAS FUNCIONES DEL GENERADOR

Creo que la forma correcta de hacer esto es usar una función de Generador. Estas son funciones destinadas a devolver secuencias, están diseñadas para este tipo de situaciones en las que tiene una secuencia que puede calcular en función de una fórmula y desea obtener el siguiente valor a voluntad.

Entonces, digamos que tiene una fórmula simple para calcular el n-ésimo número de fibonacci

 function fibonacci(n = 0) { if (n < 0){ throw 'Fibonacci not defined for negative numbers'} if (n < 2) { return n}; return fibonacci(n - 1) + fibonacci(n - 2); }

entonces simplemente envuélvalo en una función de generador (usando la sintaxis de función *, tenga en cuenta el *)

 function* fibonacciGenerator() { var index = 0; while (true){ // yields the next fibonacci yield fibonacci(index++); } }

Luego puede usarlo creando un nuevo generador y llamando a la siguiente función para recuperar el siguiente elemento en la secuencia. Tenga en cuenta que while true aquí representa que la secuencia es infinita, es decir, nunca termina y puedo seguir obteniendo más y más elementos. Esto no se convierte en un bucle infinito debido a la palabra clave yield

 let fibonacciSequence = fibonacciGenerator(); fibonacciSequence.next().value; // 0 fibonacciSequence.next().value; // 1 fibonacciSequence.next().value; // 1 fibonacciSequence.next().value; // 2

Puede leer más sobre las funciones del generador aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function *

NO USAR LAS FUNCIONES DEL GENERADOR

Si no está familiarizado con las funciones del generador o no puede usarlas, puede hacerlo con una función normal y guardar el "estado". No recomiendo en absoluto guardarlo en una variable global porque se considera unamala práctica . Pero puedes crear un cierre.

Los cierres son como funciones con su propio alcance o entorno donde pueden tener variables.

 function fibonacciGenerator() { var index = 0; return function () { return fibonacci(index++); } }

entonces utilízalo

 let fibonacciSequence = fibonacciGenerator(); fibonacciSequence(); // 0 fibonacciSequence(); // 1 fibonacciSequence(); // 1 fibonacciSequence(); // 2

tenga en cuenta que la estructura es similar a la de los generadores, pero en su lugar tenemos funciones normales.

Puede leer más sobre los cierres aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda