私は再帰を理解しようとしていますが、わかりやすい方法で直感的に理解していますが、返されるデータの集約は苦労します。再帰を適切に理解する方法(JavaScript)
var _flatten = function(arr){
if(!arr instanceof Array) return arr;
var g = [];
function flatten(arr){
for(var i = 0; i < arr.length;i++){
if(arr[i] instanceof Array){
flatten(arr[i]);
}else{
g.push(arr[i]);
}
}
}
flatten(arr);
return g;
}
このにこの
var list = [1,2,3,4,5,6,[1,2,3,4,5,[1,2,3],[1,2,3,4]]];
のようなものを回す:[ 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 1, 2, 3, 1, 2, 3, 4 ]
結構です
は例えば、配列を平らにするために、JavaScriptで私は、次のコードを思いつきましたすべてがグローバル変数gは安価なハッキングのようなものです。私は、スタックの最上位に到達したときに返される結果と、スタックに戻って関数が返されることについて考える方法を知らない。どのようにこの関数を実装し、これをより良く理解するには?
ありがとうございます!
'java'タグをチェックする' java'は 'javascript'ではない – SomeJavaGuy
このような複雑な再帰については、' [1,2,3,4、 5,6、[1,2,3,4,5、[1,2,3]、[1,2,3,4]]] '[1,2、[1,2 、3]] 'ここから、ここでの再帰がどのように機能するかを理解しようとします。 – direprobs
'g'はグローバルではありません。JavaScriptのクロージャを使用することは完全に良いアプローチです。 –