在 JavaScript 中添加到目标的任何可能组合

问题

我们需要编写一个 JavaScript 函数,它接受一个唯一整数数组,arr 作为第一个参数,目标 sum 作为第二个参数。

我们的函数应该计算可以加起来为目标总和的所有对的数量(允许重复)并返回该计数。

例如,如果函数的输入是 -

const arr = [1, 2, 3];

const target = 4;

那么输出应该是 -

const output = 7;

输出说明:

因为,可能的组合方式是 -

(1, 1, 1, 1)

(1, 1, 2)

(1, 2, 1)

(1, 3)

(2, 1, 1)

(2, 2)

(3, 1)

示例

此代码将是 -

const arr = [1, 2, 3];

const target = 4;

const sumUpto = (nums = [], target = 1, map = {}) => {

   if (target === 0){

      return 1;

   };

   if (typeof map[target] != "undefined"){

      return map[target];

   };

   let res = 0;

   for (let i = 0; i<nums.length; i++) {

      if (target >= nums[i]){

         res += sumUpto(nums, target - nums[i], map);

      };

   };

   map[target] = res;

   return res;

};

console.log(sumUpto(arr, target));

输出结果

控制台中的输出将是 -

7

以上是 在 JavaScript 中添加到目标的任何可能组合 的全部内容, 来源链接: utcz.com/z/317408.html

回到顶部