我想收集一个不重复数组的全排列集合,但是这段代码怎么都得不到结果
function permute(a){
var n = a.length
var ret = []
helper(a, 0, a.length-1,ret)
console.log(ret)
function helper(arr, start, end,ret){
var m = arr.length;
if(start === end){
ret.push(arr)
console.log(arr)
return
}else {
for(var i = start; i <= end; i++){
swap(arr ,i, start)
helper(arr, start+1, end,ret)
swap(arr, start, i)
}
}
}
function swap(arr, i, n){
var t = arr[i]
arr[i] = arr[n]
arr[n] = t
}
}
每次进去调用 helper 函数之后 ret 变量都被重新赋值了,不是以前改变的那个数组,可我这里好像没有把 ret 重新 赋值吧,每次操作都是在原对象上 push ,求各位大大解释下。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.