小小算法题

一道很简单的算法题,写着玩的

方法是写出来了,但是目前有一个问题就是 数据量大了 就会内存溢出,还需要想一想怎么办



function fun(m = 0, n = 0) {
      // leftBny 左侧边界  rightBny 右侧边界
      let [leftBny, rightBny] = m < n ? [m, n] : [n, m]
      let startNum = leftBny,    //起始位置
            endNum = leftBny,    //结束位置
            sumNum = leftBny + leftBny,
            ret = []
      function _loop() {
            while (true) {
                  if (sumNum === rightBny) {
                        ret.push({ startNum, endNum, sumNum })
                        break;
                  }
                  if (sumNum > rightBny) {
                        break;
                  }
                  ret.push({ startNum, endNum, sumNum })
                  endNum++
                  sumNum = startNum + endNum
            }
      }
      _loop()
      while (true) {
            endNum = ++startNum
            sumNum = startNum + endNum
            if (startNum > Math.floor(rightBny / 2)) {
                  break
            }
            _loop()
      }
      console.log(ret)
}
fun(3, 100000)

posted @ 2017-09-09 11:06  _白马非马  阅读(148)  评论(0编辑  收藏  举报