Найти путь к сумме - рекурсия - PullRequest
0 голосов
/ 11 декабря 2018

В качестве одного из упражнений по кодированию я попытался напечатать путь, с которым вы столкнетесь, чтобы найти конкретную сумму, в этом случае: 3.

Приращивающиеся значения будут 1 и 2. Таким образом, самый короткийпуть к сумме будет return [1,2] or [2,1].

Но я не могу попытаться указать путь к массиву - я попытался поместить индексы через параметры, но массив будет перезаписан (неудивительно).Кто-нибудь может подсказать, как решить эту проблему?

    const toSum = target => {

      const calc = sum => {
        if (sum == target) return 0;
        if (sum > target) return Infinity;

        const temp1 = 1 + calc(sum + 2);
        const temp2 = 1 + calc(sum + 1);

        return Math.min(temp1, temp2);
       };

      return calc(0);
    };

    console.log(toSum(3));

1 Ответ

0 голосов
/ 11 декабря 2018

передать массив и заполнить его текущей добавленной стоимостью

const toSum = target => {
    const calc = (sum ,res) => {
      if (sum == 0) return res
      if (sum > 2) {
          res.push(2)
          return calc(sum-2,res)
      } 
      res.push(1)
      return calc(sum-1,res)
    };
    
  if (target <1  ) return "need to be above 1" 
  if (!Number.isInteger(target) ) return "need to be an integer"
    return calc(target,[])
  };

console.log(toSum(3));
...