输入一个正整数N,输出所有和为N的连续正数序列,
例如:输入15
结果:[[1, 2, 3, 4, 5], [4, 5, 6], [7, 8]]

方法一:

let res1 = []
let res2 = []
count = 1;

function fn(n) {
  let sum = 0;
  for (let i = count; i <= Math.ceil(n / 2); i++) {
    sum += i;
    res1.push(i);
    if (sum >= n) {
      if (sum === n) res2.push(res1)
      
      res1 = []
      count++
      fn(n)
      break;
    }
  }
}
fn(15)
console.log(res2)

方法二:

function createArr(i, j) {
  const res = [];
  const sum = i + j;
  for (let i1 = i; i1 < sum; i1++) {
    res.push(i1)
  }
  return res;
}

function fn(n) {
  const res = []
  for (let i = 1; i <= Math.ceil(n / 2); i++) {
    for (j = 2;; j++) {
      const sum = (i + (i + j - 1)) * (j / 2);
      if (sum > n) break;

      if (sum === n) {
        res.push(createArr(i, j))
        break;
      }
    }
  }
  return res;
}
console.log(fn(15))