错误的排列输出
问题描述:
我这个代码有问题。我想打印所有的排列,但我得到了错误的输出。错误的排列输出
function Swap (array,index1,index2)
{
var temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
}
function Permutation(ArrayNum , StartIndex)
{
if(StartIndex == ArrayNum.length-1)
{
console.log(ArrayNum);
}
else
{
for(i = StartIndex; i< ArrayNum.length; i++)
{
Swap(ArrayNum,StartIndex,i);
Permutation(ArrayNum,StartIndex + 1);
Swap(ArrayNum,StartIndex,i);
}
}
}
例如,对于三个数字,我得到这个输出,这不是完整的排列列表。
[1, 2, 3]
[1, 3, 2]
我该如何解决这个问题?
答
您的i
变量是全局的,它应该是本地的。您可以看到错误,如果你设定了严格的模式"use strict";
for(i = StartIndex; i< ArrayNum.length; i++)
^
ReferenceError: i is not defined
没有错误,它会去只通过一个循环。
+0
谢谢你的回复,但我声明变量我在一个循环内,我认为它是一个本地.....无论如何有任何修改我的代码,修复这个问题 –
+1
非常感谢你通过添加var之前我代码工作正常,但我不明白为什么发生这个问题,因为我没有任何变量我在我的所有代码。 再次非常感谢你 即时通讯菜鸟开发人员,我感谢你的帮助。 –
从哪里得到算法?在纸上试试。 – paiv
这个算法在网络上无处不在,它是回溯算法,我认为它是正确的,但输出不是 –
如果算法是正确的,那么问题必须在于如何调用函数或如何打印结果,但你也不会显示。 –