我是這個網站的新手,我想你可以幫我解決一些我無法解決的問題。如何在Javascript中遞歸且高效地嵌套for循環?
我需要循環嵌套for循環,並找到一種方法來推動單個數組中的所有單一葉子在我for循環中心的完整路徑。
換句話說,我需要做的是這樣
var link2 = function(node,nb){
var array =[];
//getAnwers returns an array containing the leaves of the node.
var array1 = getAnswers(node);
for(var j =0;j<getAnswers(node).length;j+=2){
var array2 = getAnswers(array1[j]);
for(var k = 0;k<array2.length;k+=2){
var array3 = getAnswers(array2[k]);
for(var l=0;l<array3.length;l+=2){
var arraytemp = [];
arraytemp.push(mot);
arraytemp.push(array1[j]);
arraytemp.push(array2[k]);
arraytemp.push(array3[l]);
array.push(arraytemp);
print(arraytemp);
}
}
} return array;
}
}}
但在遞歸的方式! 我嘗試通過做這樣的事情,其中nb是遞歸的數量。
var link6 = function(node,nb){
var array = [];
var arraySave = [];
var helper = function(node2,nb,arrayTemp){//pause();
if(nb<=0){
for(var k=0;k<arrayTemp.length;k+=2){
var arrayChain = [];
for(var j=0;j<arraySave.length-1;j++){
arrayChain.push(arraySave[j]);
}
arrayChain.push(arrayTemp[k]);
if(k===arrayTemp.length-2){
arraySave.pop();
arraySave.pop();
}
array.push(arrayChaine);
}
}
else{
var array1 = getAnswers(node2);
for(var i =0;i<array1.length;i+=2){
arraySave.push(array1[i]);
helper(array1[i],nb-1,array1);
return array;
}
}
}
helper(node,nb,null);
return array;
}
的問題是,我該怎麼辦我在第一個代碼做同樣的事情,但在遞歸的方式,所以我可以選擇我的水平有樹的數量!我嘗試了你可以看到的功能link6,但沒有設法得到好的結果....我是一個初學者..
非常感謝!
您在那裏執行的'if..else'鏈將永遠不會超過第一個'else',因爲它會繼續循環。嘗試使示例代碼不那麼本地化;有很多你使用的功能,但沒有定義。此外,內部循環中的'var' D:此外,您可能會發現[_named function expressions_](http://kangax.github.com/nfe/#named-expr)有用,但請注意它們符號在IE8-上出血。 –