输入一个正整数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))