错误的排列输出

时间:2017-02-23 15:33:36

标签: javascript permutation

我遇到了这段代码的问题。我想打印所有排列,但输出错误。

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]

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的i变量是全局变量,它应该是本地变量。如果您使用"use strict";

设置严格模式,则可以看到错误
        for(i = StartIndex; i< ArrayNum.length; i++)
              ^

ReferenceError: i is not defined

没有错误,它只会经历一个循环。