组合总和

  1. 输入: k = 3, n = 9
  2. 输出: [[1,2,6], [1,3,5], [2,3,4]]
  3. 解释:
  4. 1 + 2 + 6 = 9
  5. 1 + 3 + 5 = 9
  6. 2 + 3 + 4 = 9
  7. k为数字个数 n为和
  8. 只使用数字19
  9. 每个数字 最多使用一次
// 解题思路:因为每个数字最多使用一次,故需要i=start
var combinationSum3 = function(k, n) {
    let ret = []
    let isVaild = (k, sum) => {
        if(sum == n &&path.length==k) return true
        return false
    }

    const dfs = (start, sum=0, path=[]) => {
       if(sum > n) return
       if(sum == n && path.length==k)  ret.push(path)
      for(let i = start;i<=9;i++) {
          dfs(i+1, i+sum, [...path, i])
      }
    }
    dfs(1)

    return ret
};