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

192
Visualizações
Problemas potenciales para la función recursiva que no se llama en otra función

Estoy tratando de construir una caja registradora (un proyecto de algoritmo en FreeCodeCamp) y he creado una función (giveChange(), una función recursiva) para ser invocada en otra función separada (checkCashRegister).

Sin embargo, la función no está siendo llamada. Me gustaría que la función checkCashRegister devuelva 0 en mi caso.

Verifiqué si es el problema de colocar "return" en el lugar equivocado en for loop o problemas de alcance. Tampoco parece.

 function giveChange(diff, cid) { for(let i = cid.length - 1; i > 0; i--) { if(cid[i-1][0] <= diff && diff <= cid[i][0]) { diff = diff - Math.min(cid[i-1][1], cid[i-1][0]*Math.ceil(((diff-cid[i-1][0])/cid[i-1][0]))) if(diff !== 0) { giveChange(diff, cid) } else { return diff } } } return diff } function checkCashRegister(price, cash, cid) { let diff = cash - price cid[0][0] = 0.01 cid[1][0] = 0.05 cid[2][0] = 0.1 cid[3][0] = 0.25 cid[4][0] = 1 cid[5][0] = 5 cid[6][0] = 10 cid[7][0] = 20 cid[8][0] = 100 giveChange(diff, cid) return diff } checkCashRegister(3.26, 100, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]])
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Te falta la palabra clave return antes de invocar givechange(diff, cid) ,

Nota: actualicé la condición y usé un ternario para no repetir la palabra clave de return

 function giveChange(diff, cid) { for (let i = cid.length - 1; i > 0; i--) { if (cid[i - 1][0] <= diff && diff <= cid[i][0]) { diff = diff - Math.min(cid[i - 1][1], cid[i - 1][0] * Math.ceil(((diff - cid[i - 1][0]) / cid[i - 1][0]))) return diff !== 0 ? giveChange(diff, cid) : diff } } console.log(diff) return diff } function checkCashRegister(price, cash, cid) { let diff = cash - price cid[0][0] = 0.01 cid[1][0] = 0.05 cid[2][0] = 0.1 cid[3][0] = 0.25 cid[4][0] = 1 cid[5][0] = 5 cid[6][0] = 10 cid[7][0] = 20 cid[8][0] = 100 return giveChange(diff, cid) } checkCashRegister(3.26, 100, [ ["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100] ])

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