NodeJS рекурсия с динамическим числом параметров - PullRequest
0 голосов
/ 08 ноября 2019

Я никогда не использую NodeJS и поэтому борюсь с рекурсивной функцией умножения. Кажется, проблема в том, что в рекурсии входными параметрами является массив, который затем присваивается первому значению, а не значению по значению. Вот код

const multiply = (factor1, ...factors) => {
  if (factors.length > 1){
    return Math.round(factor1 * multiply(factors) * scale) / scale;
  }
  const factor2 = factors[0];
  return Math.round(factor1 * factor2 * scale) / scale;
}

, поэтому вызов с: multiply(1,1,1,1) приводит к:

  1. итерации: factor1: 1, factors: [1,1,1]
  2. итерации: factor1: [1,1,1], factors: Array(0)

как мне получить во второй итерации factor1: 1, factors: [1,1], не проверяя, является ли factor1 массивом?

1 Ответ

1 голос
/ 08 ноября 2019

Проблема в том, что когда вы рекурсивно вызываете multiply, вы не передаете каждое число как отдельный параметр, вы передаете factors, который является массивом, поэтому при умножении получается один параметр массива.

Два способа исправить это: либо использовать синтаксис

 multiply(...factors)

Или вы можете использовать apply для вызова умножения и передачи параметров. как массив

 multiply.apply(null, factors)
...