예를 들어 다음 1차원 배열을 순회합니다.
[javascript] view plaincopyprint?
var a1 = [1];
var a2 = [1, 2]
var a3 = [1, 2, 3];
길이는 다양하지만 반복하는 것은 매우 쉽고 우아합니다.
var dumpArrayByLoop = function(a) {
for (var i = 0; i < a.length; i ) {
println(a[i])
}
}; >
대신 재귀를 사용하면 어색해 보입니다.
코드 복사
코드는 다음과 같습니다.[javascript] view plaincopyprint? var dumpArrayByRecur = function(i, a) {
if (i < a.length) {
println(a[i])
dumpArrayByRecur(i 1, a)
} }
}
동일한 결과를 출력하지만 재귀 버전은 비교해 보면 투박해 보입니다.
이제 메타데이터가 변경되면 생각해 보세요. 차원이 2차원으로 확장됩니다.
코드 복사
코드는 다음과 같습니다.[javascript] view plaincopyprint? var a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
이때 이중 루프를 형성하려면 외부에 또 다른 루프 레이어를 추가해야 합니다.
코드 복사
코드는 다음과 같습니다.[javascript] view plaincopyprint? var dumpArrayByLoop = function(a) {
for (var i = 0; i < a.length; i ) {
for (var j = 0; j < a[i].length; j ) {
println(a[i][j]); 루프 사용을 처리하는 방법은 무엇입니까?
'레이어' 수가 매우 깊거나 심지어 불확실한 상황에서는 교차 '레이어' 문제를 해결하기 위해 '재귀'를 사용해야 합니다.
코드 복사
코드는 다음과 같습니다.
[javascript] view plaincopyprint?
dumpArray(a[i])
} else {
println(a);
}
};
위 코드에서 하위 노드가 배열인 것으로 확인되면 재귀를 사용하여 다음 레벨로 진입하고 루프를 사용하여 동일한 레벨의 순회를 완료합니다.