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

536
Vistas
¿Cómo escribir una función que genere series de Fibonacci más pequeñas que un número dado (javascript)?

Aquí está mi código:

 function fibs(num) { //generate Fibonacci numbers: let arr = [1,1] let i = 2; function fibsRange(i) { arr[i] = arr[i-1] + arr[i-2] if (arr[i] < num) { fibsRange(i+1);//call function one more time; } return arr } return fibsRange(); } console.log(fibs(5));

Suponga que el número dado (num) es mayor que 2. ¿Dónde me equivoco?

Nota: edité mi código.

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

0

primero: como lo mencionó Phil, su función (la primera) necesita devolver algo. segundo: no necesita 2 funciones, una hará el trabajo. Aquí hay una versión funcional de su código (también modifiqué un código innecesario.

Editar: agregué el caso cuando necesita analizar solo un parámetro

 function fibsRange(i,arr,num) { if(arr[i-1]+arr[i-2] > num) return arr else{ arr[i] = arr[i - 1] + arr[i - 2] return fibsRange(i + 1,arr,num); } } //in case you need just one parameter function fib(num){ let arr = [1, 1]; let i = 2; return fibsRange(i,arr,num); } //those(declaration of arr and i) are unnecessary in case you use fib let arr = [1, 1] let i = 2; console.log(fibsRange(i,arr,5)); console.log(fib(5));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Nunca llamaste a tu función fibsRange() y nunca devolviste nada de fibs() .

La siguiente versión funciona.

 function fibs(num) { //generate Fibonacci numbers: let arr = [1, 1] if (num>1) fibsRange(2); function fibsRange(i) { arr[i] = arr[i - 1] + arr[i - 2] if (arr[i] < num) { fibsRange(i + 1); //call function one more time; } } return arr; } console.log(fibs(5)); //undified;

about 4 years ago · Juan Pablo Isaza Denunciar

0

Su código está comprobando si arr[i] < num , luego invoque fibsRange(i+1) . Esta es una lógica incorrecta, siempre obtendrá el número de fibbonacci un poco más alto que el num porque ya lo está configurando en arr[i] y luego verifica la condición. Sin embargo, primero debe verificar si arr[i] < num , y luego insertarlo en arr .

 function fibs(num) { //generate Fibonacci numbers: let arr = [1, 1]; let i = 2; function fibsRange(i) { const lastFibNumber = arr[i - 1] + arr[i - 2]; if (lastFibNumber < num) { arr.push(lastFibNumber); fibsRange(i + 1); //call function one more time; } return arr; } return fibsRange(i); } console.log(fibs(5));
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