• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

216
Views
¿Cómo uso el ciclo while mientras descifro la serie de Fibonacci?

Acabo de comenzar con Js, estaba enfrentando un problema con Js y no pude encontrar una solución similar, agradecería si alguien me ayuda.

 var i = 0; var j = 1; var k = 0; function fibbo(n) { if (n === 1) { console.log([0]); } else if (n === 2) { console.log([0, 1]); } else { while (k <= n) { var l = [0, 1]; var b = l.length; l.push(l[b - 2] + l[b - 1]); k++; } } return l; } fibbo(4); console.log(l);

about 3 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Asegúrese de declarar las variables localmente dentro de la función, si es ahí donde se usan. Puede tratar los casos base de manera diferente (estableciendo la propiedad de length ), y existe el método JS reciente Array#at ... :

 function fibo(n) { const l = [0, 1]; while (l.length < n) l.push(l.at(-2) + l.at(-1)); l.length = n; // for the case n < 2 return l; } console.log(fibo(4));

about 3 years ago · Juan Pablo Isaza Report

0

Además de intentar acceder a l fuera de la función, su l en la declaración de devolución a veces no está definida cuando se proporciona 0 o 1 a la función. Más importante aún, l no debe definirse en el ciclo while sino fuera de él.

Además, tiene variables como i y j que no se usan, y k que se usa pero su alcance es problemático:

  1. Está fuera de la función, por lo que las ejecuciones repetidas harán que k aumente continuamente
  2. k se usa para rastrear el número de iteraciones, mientras que su código indica que n debe ser la cantidad de números devueltos

Aquí hay una lógica mucho más simplificada, suponiendo que se supone que n es la cantidad de números de Fibonacci que se devolverán:

  1. Si n === 1 o n === 2 , devuelve la matriz semilla
  2. De lo contrario, simplemente ejecute un ciclo while que solo dejará de ejecutarse una vez que la matriz de semillas exceda n . En el bucle while, conservamos la lógica de empujar números, pero de lo contrario no es necesario que se incrementen otras variables.

Ver ejemplo de prueba de concepto:

 function fibbo(n) { if (n === 1) { return [0]; } else if (n === 2) { return [0, 1]; } else { const l = [0, 1]; while (n > l.length) { const b = l.length; l.push(l[b - 2] + l[b - 1]); } return l; } } console.log(fibbo(4));

about 3 years ago · Juan Pablo Isaza Report

0

Usando un bucle while , mi opinión será la siguiente:

n = 0 || n = 1 . If n > 1 , repite n - 1 veces y dentro de cada iteración agrega la suma de los dos valores anteriores en la secuencia existente al último índice.

Una vez que el ciclo termina, toda la secuencia se recorta a la longitud de n y se devuelve. (Esta última pieza de recorte originalmente faltaba en mi solución y se agregó después de leer la respuesta de trincot )

 const fibbo = (n) => { const sequence = [0, 1]; let i = 2; let next; while(i <= n) { next = sequence[i - 2] + sequence[i - 1]; sequence[i++] = next; } return sequence; } console.log(fibbo(6));

about 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error