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

  

posted @ 2022-04-28 10:41  这个攻城狮不太冷静  阅读(151)  评论(0编辑  收藏  举报