Javascript增长人口问题:代码返回错误的答案

问题描述 投票:-2回答:1

我有以下问题:

在一个小镇,人口是一年初的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?

javascript function for-loop rate
1个回答
0
投票

您需要检查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语句。因此,您的函数将始终返回i0的初始值。

© www.soinside.com 2019 - 2024. All rights reserved.