递归函数调用后循环停止执行-javascript
我试图构造一个函数,它可以生成一个包含所有可能排列的数组,而不需要重复给定数组中的字符。问题在于,当递归调用recur时,for循环的其余部分不会执行,因此var total由1个字符串组成递归函数调用后循环停止执行-javascript,javascript,recursion,Javascript,Recursion,我试图构造一个函数,它可以生成一个包含所有可能排列的数组,而不需要重复给定数组中的字符。问题在于,当递归调用recur时,for循环的其余部分不会执行,因此var total由1个字符串组成 function recur(arr,wordArr) { if(arr.length == 0) { total.push(wordArr); } else { for(var i = 0;i < arr.length;i++) {
function recur(arr,wordArr) {
if(arr.length == 0) {
total.push(wordArr);
} else {
for(var i = 0;i < arr.length;i++) {
var temp = arr;
var newwordArr = wordArr;
newwordArr += temp.splice(i, 1);
recur(temp,newwordArr);
}
}
}
var arr = "abc".split("");
var total = [];
recur(arr,'');
console.log(total);
调用recur[a,b]应该使total=['ab','ba']
有些事情我看不到,或者我试图做的是根本不允许的。即使我做了很多搜索,也找不到这个问题的答案。您需要在for循环的每个步骤中复制数组
function recur(arr,wordArr) {
if(arr.length == 0) {
total.push(wordArr);
} else {
for(var i = 0;i < arr.length;i++) {
var temp = Array.from(arr);
var newwordArr = wordArr;
newwordArr += temp.splice(i, 1);
recur(temp,newwordArr);
}
}
}
此函数将创建新数组并填充旧数组
阅读更多关于
我删除了我的答案,因为它不足以满足您的需要,但这正是您想要做的。检查一下,看看是否可以复制结果/修改代码。@Kevin谢谢你的帮助!我希望这是一个这样的问题。谢谢!!
Array.from(oldArray|oldSet)