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