Проблема роста населения в Javascript: код возвращает неправильный ответ - PullRequest
0 голосов
/ 15 апреля 2019

У меня следующая проблема:

В небольшом городке население в начале года составляет p0 = 1000. Население регулярно увеличивается на 2 процента в год, и более 50 новых жителей в год приезжают жить в город. Сколько лет город должен видеть, что его население больше или равно p = 1200 жителям?

Ниже мой код:

function nbYear(p0, percent, aug, p) {    
  for (var i=0; p0 < p; i++){
    p0 = p0 * (1 + percent/100) + aug;     
    return i
  }
}        
nbYear(1000, 2, 50, 1200)

Мое решение возвращает 0, что неверно. Правильный ответ - 3. Я знаю, если я уберу {}, это даст мне правильный ответ. Но я хочу понять, что не так с моим кодом. Почему возвращается 0?

1 Ответ

0 голосов
/ 15 апреля 2019

Вам нужно проверить значение p0 (увеличение населения) и вернуть i исходя из этого.

function nbYear(p0, percent, aug, p) {

  var i = 0;
  while (true) {
    if (p0 >= p) {return i;}
    p0 = p0 * (1 + percent/100) + aug; i++;
  }
}
nbYear(1000, 2, 50, 1200)

Чтобы понять, что не так с вашим кодом, вам нужно понять, как работают оператор return и цикл for. Если вы возвращаете значение i внутри цикла без каких-либо условий, оператор return выполняется независимо от того, что. Таким образом, ваша функция всегда будет возвращать начальное значение i, то есть 0.

...