前端小白---学习之旅前端
思路解析(组合求和)
数组元素 [1,2,3,4,6] 目标: 7
成立:[3,4]
成立:[1,2,4]
思路:目标减去 - 任意组合 = 0 // 则成立数组
代码学习
function combinatorialSum( targetArr, // 数列 targetsum, // 目标数组 generatearr = [], // 生成的数组 combination = []) { if (targetsum < 0) return; if (targetsum === 0) { // 此时 combination 虽然能够打印出值 可是因为是地址引用 因此它会返回以前的长度 可是会返回修改后的结果 // combination.slice() || [... combination] generatearr.push(combination.slice()) return generatearr; } // 遍历这个数组 targetArr for (let i = 0; i < targetArr.length; i++) { const item = targetArr[i]; combination.push(targetArr[i]); combinatorialSum(targetArr, targetsum - item, generatearr, combination); combination.pop(); } return generatearr; }