Расчет количества лет для охвата целевой группы населения в JavaScript

Данный фрагмент кода представляет собой функцию JavaScript с именем nbYear. Судя по предоставленному коду, он рассчитывает количество лет, необходимое населению (p0) для достижения определенной целевой группы населения (p) на основе ежегодных темпов роста. (процент) и годовой прирост населения (август).

function nbYear(initialPopulation, annualGrowthRate, annualIncrease, targetPopulation) {
  let years = 0;

  while (initialPopulation < targetPopulation) {
    initialPopulation += Math.round(initialPopulation * (annualGrowthRate / 100)) + annualIncrease;
    years++;
  }

  return years;
}

Эта функция вычисляет количество лет (years), необходимое для того, чтобы начальная популяция (initialPopulation) достигла или превысила целевую популяцию (targetPopulation) на основе предоставленных годовых темпов роста (annualGrowthRate) и годового прироста населения (annualIncrease).

Что касается методов, вот несколько альтернативных подходов для достижения того же результата:

Метод 1: использование цикла for

function nbYear(initialPopulation, annualGrowthRate, annualIncrease, targetPopulation) {
  let years;

  for (years = 0; initialPopulation < targetPopulation; years++) {
    initialPopulation += Math.round(initialPopulation * (annualGrowthRate / 100)) + annualIncrease;
  }

  return years;
}

Метод 2. Использование рекурсии

function nbYear(initialPopulation, annualGrowthRate, annualIncrease, targetPopulation, years = 0) {
  if (initialPopulation >= targetPopulation) {
    return years;
  }

  return nbYear(
    initialPopulation + Math.round(initialPopulation * (annualGrowthRate / 100)) + annualIncrease,
    annualGrowthRate,
    annualIncrease,
    targetPopulation,
    years + 1
  );
}