【发布时间】:2016-12-13 12:45:53
【问题描述】:
这是我的 js:-
function recPerm(rest, soFar) {
var next;
var remaining;
var output=[];
if (rest === '') {
console.log(soFar); //outputting strings..and this works
output.push(soFar);
} else {
for (var i = 0; i < rest.length; i++) {
remaining = rest.substr(0,i) + rest.substr(i+1,rest.length-1);
next = soFar + rest[i];
recPerm(remaining, next);
}
}
return output; //returns an empty array in the end
}
var out=recPerm('abc','');
console.log(out); //prints empty array
递归地,我正在尝试打印输入字符串的排列。我正在传递输入字符串和一个空白字符串,然后递归地调用这个函数,并使用剩余的字符串和字符串中的下一个单独的字符来考虑。在基本情况下,我成功地记录了单个字符串。但不知何故,它没有将它保存在我的数组中。我的 JS 中是否遗漏了什么?
【问题讨论】:
-
在你的函数中你应该做类似
output.push(somevalue); -
对
recPerm的每次调用都会创建并返回一个新数组,然后您将在递归调用中忽略它。您需要将该返回数组的内容添加到调用方范围内的数组中。 -
String.prototype.substr() 将子字符串的长度作为第二个参数。我猜你在传递索引时可能是错的。
标签: javascript arrays string recursion