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

535
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 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