Код ниже должен работать для вас.По сути, я сделал следующее: если вход равен 10, а ваша сумма равна 9, он все равно будет включен в цикл while.Затем он снова добавит n, и теперь ваш номер больше, чем ваш ввод (который равен 10), но вы все равно его вернете.Здесь я сделал то, что в конце цикла while, если ваша сумма больше, чем вы, вычтите одну из a.Таким образом, он все равно будет выполняться, но это решит проблему.
Также еще одна ошибка, которую я заметил, заключалась в том, что сумма начиналась с 1, а n начиналась с 1. Вы хотели 1 + 2 + 3 + ... +n, однако, используя ваш предыдущий метод, вы получаете 1 + 1 + 2 + 3 + ... + n.
var num = prompt("Enter a number");
function test(x) {
var sum = 0,
n = 1,
tempSum = 1,
a = 0;
while (sum <= x) {
sum += n;
n++;
a++;
if (sum > x) {
a--;
}
}
return a;
}
var output = test(num);
console.log("Result is :", output);