Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

307
Visualizações
¿El generador de secuencias de Fibonacci no funciona para 1 o 2 como entradas pero funciona para el resto de la secuencia?

¿Alguien puede explicarme por qué mi función fibonacciGenerator no funciona con este código? Entiendo por qué funciona con el segundo código, pero no entiendo por qué no funciona el primero.

 function fibonacciGenerator(n) { if (n > 0) { var fArray = []; fArray.push(0); if (n >= 2) { fArray.push(1); } for (var i = 0; i < n; i++) { fArray.push(fArray[i] + fArray[i + 1]); } console.log(fArray); } } fibonacciGenerator(1); fibonacciGenerator(2);

Segundo código funcionando:

 function fibonacciGenerator(n) { if (n > 0) { var fArray = []; fArray.push(0); if (n >= 2) { fArray.push(1); } for (var i = 2; i < n; i++) { fArray.push(fArray[i - 1] + fArray[i - 2]); } console.log(fArray); } } fibonacciGenerator(1); fibonacciGenerator(2);

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

El primer código está imprimiendo 2 números de Fibonacci adicionales, esto se debe a que:

primero está presionando 0 y 1 en la matriz como:

 var fArray = []; fArray.push(0); if (n >=2 ){ fArray.push(1); }

y luego vuelves a repetir hasta n veces. Por esta razón, imprime dos números de Fibonacci adicionales.

la solución es repetir el tiempo n-2 o usar el segundo código.

about 4 years ago · Juan Pablo Isaza Relatório

0

var fArray = []; fArray.push(0); if (n >= 2) { fArray.push(1); }

La condición inicial es cubrir n=1: [0] y n=2: [0,1]

El segundo código funciona porque el ciclo solo comienza cuando n es mayor que i , lo que significa que se salta el ciclo con n < 2 .

Para su problema, no se salta el ciclo cuando n < 2 .

 for (var i = 0; i < n; i++) { fArray.push(fArray[i] + fArray[i + 1]); }

Puede imaginar que el resultado será como el siguiente cuando n < 2 con su bucle. Tenga en cuenta que el valor inicial es fArray = [0]

 fArray.push(fArray[0] + fArray[1]); //fArray[1] is undefined because you only have 1 item in your array

En este caso fArray[0] + fArray[1] ==> 0 + undefined = NaN

Entonces es por eso que tu lógica no funciona cuando n < 2

Para corregirlo, debe evitar el bucle si n < 2

 //if n=1 or n=2, it won't trigger the loop due to `i < n-2` for (var i = 0; i < n-2; i++) { fArray.push(fArray[i] + fArray[i + 1]); }
about 4 years ago · Juan Pablo Isaza Relatório

0

La idea de comenzar con 0 i lugar de 2, y ajustar el cuerpo del bucle en consecuencia, está bien, pero hay una cosa que la primera versión no ajustó: la condición de parada del bucle.

Al establecer i=0 , la primera versión se repite 2 veces más que la segunda versión. También debe modificar la condición final de la misma manera: en lugar de i < n , debe tener i < n - 2 , para asegurarse de que el número de iteraciones sea el mismo que en la segunda versión.

No está relacionado con su pregunta, pero es mejor colocar console.log fuera de la función. El trabajo de la función debe ser devolver la matriz, no imprimirla. Así también, cuando n > 0 es falso, debería devolver una matriz vacía.

 function fibonacciGenerator(n) { var fArray = []; if (n > 0) { fArray.push(0); if (n >= 2) { fArray.push(1); } for (var i = 0; i < n - 2; i++) { fArray.push(fArray[i] + fArray[i + 1]); } } return fArray; } console.log(fibonacciGenerator(1)); console.log(fibonacciGenerator(2));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda