たとえば、次の 1 次元配列を走査します:
[javascript] view plaincopyprint?
var a1 = [1];
var a2 = [1, 2]
;
長さは異なりますが、ループするのは非常に簡単でエレガントです:
[javascript] view plaincopyprint?
var dumpArrayByLoop = function(a) {
for (var i = 0; i
println(a[i]) }
}; >
代わりに再帰を使用すると、見た目がぎこちなくなります:
var dumpArrayByRecur = function(i, a) {
if (i
println(a[i]);
dumpArrayByRecur(i 1, a);
}
これらは同じ結果を出力しますが、再帰バージョンは比較すると不格好に見えます。
ここで、メタデータが変更された場合について考えてみましょう。次元は 2 次元に拡張されます。
コードをコピー
コードは次のとおりです:[javascript] view plaincopyprint? var a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
この時点で、外側にもう 1 つのループ層を追加して二重ループを形成する必要があります:
コードをコピー
コードは次のとおりです:
[javascript] view plaincopyprint?
var isArray = function(a) {
}
};
上記のコードでは、子ノードが配列であることが判明した場合、再帰を使用して次のレベルに進み、同じレベルの走査はループを使用して完了します。