输入一个整数N,输出所有和为N的连续正数序列
-
输入一个整数N,输出所有和为N的连续正数序列
- 例如 ;输入15 结果[1,2,3,4,5],[4,5,6],[7,8]
- 15=>15/2向上取整 8, 只取中间值以下的
- 从N开始计算连续M个的正数序列和
-
//网上方法
function createdArr(n, len) {
console.log(n,len);
let arr = [];
for (let index = n; index < n+len; index++) {
arr.push(index)
}
return arr;
}
function fn(count) {
let result = [];
//取出中间值
let middle = Math.ceil(count / 2);
//从1开始累加
for (let i = 1; i <= middle; i++) {
//控制累加多少次
for (let j = 2; j <= middle; j++) {
let total = (i + (i + j - 1)) * (j / 2)
if (total > count) {
break
} else if (total === count) {
result.push(createdArr(i, j))
}
}
}
return result
}
console.log(fn(15));
改造下:
function createdArr(n, len) {
console.log(n,len);
let arr = [];
for (let index = n; index <= len; index++) {
arr.push(index)
}
return arr;
}
function fn(count) {
let result = [];
//取出中间值
let middle = Math.ceil(count / 2);
//从1开始累加
for (let i = 1; i <= middle; i++) {
//控制累加多少次
let total = i;
for (let j = i+1; j <= middle; j++) {
total +=j;
if (total > count) {
break
} else if (total === count) {
result.push(createdArr(i, j))
}
}
}
return result
}
console.log(fn(15));

浙公网安备 33010602011771号