Permutações através do algoritmo de Heap com uma vírgula misteriosa

Passei o dia inteiro (finalmente) envolvendo minha cabeça em torno de um algoritmo de permutação na prática para um pedido de admissão na sexta-feira. O algoritmo de Heap parecia mais simples e elegante para mim.

Aqui está um exemplo disso:http://en.wikipedia.org/wiki/Heap%27s_algorithm

 function permutationArr(num) { 
    var str = num.toString();
    var arr = str.split('');
    var permutations = [];   
    function getPerm(arr,n){   
        var localArr = arr.slice(0);
        var i;
        var swap;
        var temp; 
        if(n==1){
            permutations.push(localArr.toString());
            return;
        }
        for(i=0;i<n;i++){
            getPerm(localArr,n-1);    
            swap = (n%2 ? i: 0);
            temp = localArr[swap];
            localArr[swap] = localArr[n-1];
            localArr[n-1] = temp;    
        }
    }    
    getPerm(arr,arr.length);
    console.log(permutations);
    return;    
}    
permutationArr(1234);     

O log para a matriz de permutações finais está aqui:

 ["1,2,3,4", "1,3,2,4", "4,2,3,1", "4,3,2,1", "4,1,3,2", "4,3,1,2", "1,,3,4,2", "1,3,,4,2", "4,,3,1,2", "4,3,,1,2", "4,1,3,,2", "4,3,1,,2", "1,2,3,4,", "1,3,2,4,", "4,2,3,1,", "4,3,2,1,", "4,1,3,2,", "4,3,1,2,", "1,,3,4,2", "1,3,,4,2", "4,,3,1,2", "4,3,,1,2", "4,1,3,,2", "4,3,1,,2"]

Ele obtém as 12 primeiras permutações corretamente e, em seguida, um ',' é adicionado misteriosamente, e as 12 primeiras permutações são repetidas. Estou perplexo.

EDIT: acima é o código atualizado, levando em consideração o que os comentários disseram para ajudar. Ainda estou recebendo metade das permutações.

questionAnswers(3)

yourAnswerToTheQuestion