ringa_lee
이것은 흑마술을 사용한 순열 및 조합 구현입니다. 달성되는 기능은 대략 다음과 같습니다.
choose([1, 2, 3], 1)은 [ [ 1 ], [ 2 ], [ 3 ] ]
[ [ 1 ], [ 2 ], [ 3 ] ]
choose([1, 2, 3], 2)는 [ [ 1, 2 ], [ 1, 3 ], [ 2, 3 ] ]
[ [ 1, 2 ], [ 1, 3 ], [ 2, 3 ] ]
choose([1, 2, 3, 4], 3)은 [ [ 1, 2, 3 ], [ 1, 2, 4 ], [ 1, 3, 4 ], [ 2, 3, 4 ] ]
[ [ 1, 2, 3 ], [ 1, 2, 4 ], [ 1, 3, 4 ], [ 2, 3, 4 ] ]
내부 익명 함수는 arguments.callee를 통해 자신을 재귀적으로 호출합니다. 자신을 재귀적으로 호출할 때마다 크기 매개변수는 1씩 줄어듭니다. 각 newResult는 2차원입니다. [길이는 총 조합 수이고 각 요소는 현재 조합입니다.] 배열, newResult의 각 항목 길이가 크기에 도달하면 재귀가 종료되고 최종 결과가 반환됩니다.
arguments.callee
클로저 작성 방식은 함수의 내부 매개변수가 외부 요인에 의해 영향을 받는 것을 방지합니다.
이것은 흑마술을 사용한 순열 및 조합 구현입니다. 달성되는 기능은 대략 다음과 같습니다.
choose([1, 2, 3], 1)은
[ [ 1 ], [ 2 ], [ 3 ] ]
choose([1, 2, 3], 2)는
[ [ 1, 2 ], [ 1, 3 ], [ 2, 3 ] ]
choose([1, 2, 3, 4], 3)은
[ [ 1, 2, 3 ], [ 1, 2, 4 ], [ 1, 3, 4 ], [ 2, 3, 4 ] ]
내부 익명 함수는
arguments.callee
를 통해 자신을 재귀적으로 호출합니다. 자신을 재귀적으로 호출할 때마다 크기 매개변수는 1씩 줄어듭니다. 각 newResult는 2차원입니다. [길이는 총 조합 수이고 각 요소는 현재 조합입니다.] 배열, newResult의 각 항목 길이가 크기에 도달하면 재귀가 종료되고 최종 결과가 반환됩니다.클로저 작성 방식은 함수의 내부 매개변수가 외부 요인에 의해 영향을 받는 것을 방지합니다.