Javascript 堆置换算法以相反的方式完成。。。。?

Javascript 堆置换算法以相反的方式完成。。。。?,javascript,algorithm,permutation,Javascript,Algorithm,Permutation,我试图以相反的方式使用Heaps算法,将元素固定在数组的开头,而不是最后一个。但是我不能得到结果。虽然我理解了这个算法的理论部分,但当我试图实现它时,它是令人困惑的。我主要对if条件中的swap语句感到困惑。(请查看评论)。如果有人能说出问题出在哪里,那会很有帮助。谢谢你抽出时间 function permute(string){ var str = string.split(""), strbrr = []; function swap(strbrr,index1,index2) {

我试图以相反的方式使用Heaps算法,将元素固定在数组的开头,而不是最后一个。但是我不能得到结果。虽然我理解了这个算法的理论部分,但当我试图实现它时,它是令人困惑的。我主要对if条件中的swap语句感到困惑。(请查看评论)。如果有人能说出问题出在哪里,那会很有帮助。谢谢你抽出时间

function permute(string){ 
  var str = string.split(""), strbrr = [];

function swap(strbrr,index1,index2) {
  var temp = strbrr[index1];
             strbrr[index1] = strbrr[index2];
             strbrr[index2] = temp;
}

function permuteHelper(strarr, curr, end) {
  if (curr == end)
    console.log(strarr);
  else{            
    var fixed  = strarr[curr];
    for(i=curr; i<=end; i++) {     
      permuteHelper(strarr,curr+1,end);
      (end+1)%2 ? swap(strarr,end,curr) : swap(strarr,i,end);    //This is the most confusing part for me. What is the code here?
    }
  }  
}

permuteHelper(str,0,str.length-1);

}

var string1 = "ABCD";

permute(string1);
函数置换(字符串){
var str=string.split(“”),strbrr=[];
功能交换(strbrr、index1、index2){
var-temp=strbrr[index1];
strbrr[index1]=strbrr[index2];
strbrr[index2]=温度;
}
函数permuteHelper(strarr、curr、end){
如果(当前==结束)
控制台日志(strarr);
否则{
固定var=strarr[curr];

对于(i=curr;i)什么是“请检查注释”意思?如果你打算详细阐述你的问题以添加上下文和示例,请在你的问题中这样做,而不是通过注释。他的意思实际上是代码中的注释部分。给定字符串ABCD,你的预期输出是什么?我的意思是你返回什么。我没有看到任何返回语句。我想做的是打印所有的perm置换,我正试图通过permuteHelper中if语句中的console.log语句来实现。请原谅我的编码技巧..我只是个新手。:)