Estoy tratando de usar la recursividad para resolver el siguiente problema:
En un pueblo pequeño la población es p0 = 1000 al comienzo de un año. La población aumenta regularmente en un 2 por ciento anual y, además, 50 nuevos habitantes por año vienen a vivir a la ciudad. ¿Cuántos años necesita el pueblo para ver su población mayor o igual a p = 1200 habitantes?
Este es mi código:
function nbYear(p0, percent, aug, p) { let years = 0; function recYears(p0, percent, aug, p) { years += 1; if (p/p0 <= 1.06 && p/p0 >= 1) { return years; } else { return nbYear(p0 + p0 * (percent/100) + aug, percent, aug, p) } } return recYears(p0, percent, aug, p); } console.log(nbYear(1500, 5, 100, 5000)) Usé la variable years fuera de la función recursiva y la incrementé adentro. Pero el problema es que el retorno de recYears() es 1 cuando llega al caso base mientras espero que el valor de retorno sea 15 , ¡no sé lo que me estoy perdiendo aquí! Apreciaría tu ayuda.
Como dijo Pointy en el comentario, en lugar de llamar a recYears() estaba llamando a la función externa nbYear() .