为了账号安全,请及时绑定邮箱和手机立即绑定

如何优化这个递归算法?

如何优化这个递归算法?

蓝山帝景 2019-02-13 15:18:35
原帖 集合的划分,我需要把所有的可能都列出来。。我根据上面的算法写的代码,但会让浏览器内存爆了,请问如何优化这个递归算法?大神可以忽略我的代码,直接写自己的代码,解决我的需求。。多谢。
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

感觉这个就可以一定程度的优化。
Js通过记忆优化递归

查看完整回答
反对 回复 2019-02-22
?
HUH函数

TA贡献1836条经验 获得超4个赞

function group(total, size) {

  var groupList = []

  var arr = []

  for (let i = 0; i < total; i++) {

    arr.push(i + 1)

  }


  (function (arr, size, group) {

    var arrLen = arr.length

    if (size > arrLen) return

    if (size == arrLen) {

      groupList.push([].concat(group, arr))

    } else {

      for (var i = 0; i < arrLen; i++) {

        var newGroup = [].concat(group)

        newGroup.push(arr[i])

        if (size == 1) {

          groupList.push(newGroup)

        } else {

          var newArr = [].concat(arr)

          newArr.splice(0, i + 1)

          arguments.callee(newArr, size - 1, newGroup)

        }

      }

    }

  })(arr, size, []);


  return groupList;

}

console.log(group(3, 2))

console.log(group(4, 2))

console.log(group(4, 3))

console.log(group(5, 2))


查看完整回答
反对 回复 2019-02-22
  • 2 回答
  • 0 关注
  • 646 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信