DmitrySerg14
@DmitrySerg14
учу JS

Почему инициализация суммы в цикле while равна 1?

const multiplyNumbersFromRange = (start, finish) => {

  let i = start;
  let sum = 1; // Инициализация суммы

  while (i <= finish) { 
    sum = sum * i; 
    i = i + 1; 
  }
  return sum;
};
multiplyNumbersFromRange (0, 5);


Почему let sum не может быть =0?
  • Вопрос задан
  • 235 просмотров
Решения вопроса 2
Alexandroppolus
@Alexandroppolus
кодир
Что-то эта твоя "сумма" подозрительно похожа на умножение. Потому и единица, иначе результат был бы 0.
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Функция умножает числа в цикле от start до finish.

Так как это умножение, начальное значение не может быть 0, иначе результат всегда будет 0.

По-хорошему, первым значением можно брать сразу первое число start и домножать, начиная со следующего start + 1:
const multiplyNumbersInRange = (start, finish) => {
  let result = start;
  let i = start + 1;

  while (i <= finish) {
    result *= i;
    i += 1;
  }
  return result;
};

multiplyNumbersInRange(1, 3); // 1 * 2 * 3 = 6

Надо определиться с крайними случаями: какой должен быть результат, когда в «умножении» участвует только одно число? (когда start === finish)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы