从C ++书中翻译(显然是错误的)。 如果我能让它发挥作用,那么我就可以开始尝试去理解它了。
function recPermute(soFar, rest)
{
if (rest==="")
{
console.log(soFar);
}
else
{
for(i=0; i<rest.length; i++) // <<< error was in not declaring the "i"
{
var next = soFar + rest[i];
var remaining = rest.substr(0,i) + rest.substr(i+1);
recPermute(next, remaining);
}
}
}
function listPerm(s)
{
recPermute("",s);
}
listPerm("kitcap")
答案 0 :(得分:1)
对于JavaScript,请使用charAt(),而不是使用类似访问的数组。
var next = soFar + rest.charAt(i);
答案 1 :(得分:1)
您需要declare i
所以它的范围是recPermute
:
for(var i=0; i<rest.length; i++)
如果没有var
,it'll be created as a global,那么对recPermute
的每次调用都会改变其他任何来电。
答案 2 :(得分:0)
可能存在问题的一件事是,您对该函数的每次调用都使用相同的i
。您需要声明一个本地i
,否则它将在全局范围内声明。
for(var i = 0; ....