javascript 재귀함수 예제

2번째 경우는 객체를 생성할 때 재귀 단계입니다. 복잡한 작업은 소규모 부서의 하위 작업으로 분할됩니다. 그들은 차례로 다시 분할 할 수 있지만, 조만간 분할 (1)에서 완료됩니다. 이 방법으로 코드를 작성하면 부작용없이 상태 비수기 방식으로 전체 프로세스를 설명 할 수 있습니다. 또한 계산을 수행하기 전에 함수에 전달되는 인수의 값을 테스트하는 방법입니다. 터미널 케이스에 도착했을 때 스스로를 호출하는 모든 함수가 신속하고 깨끗하게 종료되기를 원합니다. 이런 식으로 계산된 팩터의 경우, 터미널 케이스는 통과된 숫자가 0 또는 음수일 때 발생합니다(음수 값을 테스트하고 원하는 경우 다른 메시지를 반환할 수도 있음). 여기서 우리는 동일한 함수 pow를 호출하지만 절대적으로 중요하지 않습니다. 이 프로세스는 모든 함수에 대해 동일합니다: 재귀는 함수 호출 자체를 반복적으로 사용하여 결과에 도달할 때까지 작업을 반복하는 기술입니다.

대부분의 루프는 재귀 스타일로 다시 작성할 수 있으며 일부 기능 언어에서는 루핑에 대한 이 접근 방식이 기본값입니다. 필요한 경우 JavaScript가 재귀 함수를 안전하게 수행하도록 강제하는 방법이 있습니다. 예를 들어 재귀 실행을 반복적으로 관리하기 위해 사용자 지정 트램폴린 함수를 생성하여 스택에 한 번에 하나의 작업만 유지할 수 있습니다. 이러한 방식으로 사용되는 트램폴린 함수는 JavaScript가 특정 컨텍스트에 함수를 바인딩하는 기능을 활용하여 재귀 함수를 자체적으로 바운스하여 주기가 완료될 때까지 한 번에 하나씩 결과를 생성할 수 있습니다. 이렇게 하면 수행대기 중이면 작업의 딥 스택이 생성되지 않습니다. 링크 된 목록 요소는 재귀적으로 개체로 정의 됩니다. 몇 가지 자신을 구성 (또는 해체)하려고 할 수도 있습니다. 그러나 당신은 아마 야생에서 효과적인 재귀의 많은 예를 본 적이 없습니다. 사실, 이 접근법의 이국적인 특성 이외에는 재귀가 유용할 때와 위치, 또는 부주의하게 사용하면 얼마나 위험할 수 있는지 를 고려하지 않았을 수 있습니다. 즉, 요인(n)의 결과는 요인(n-1)의 결과를 곱한 n으로 계산될 수 있습니다.

그리고 n-1에 대한 호출은 재귀적으로 1까지 하강하고, 더 낮게 내려갈 수 있습니다. 우리는 자바 스크립트가 우리가 인수로 함수를 가지고 함수를 작성할 수 있습니다 알고있다. 따라서 우리가 쓰고 있는 실제 함수를 사용하고 실행의 맥락에서 실행하려면 어떻게 해야 할까요? 위의 함수는 누적 값을 사용하여 계수 함수를 5에서 0으로 재귀적으로 호출합니다. 조건 n ===0은 이 함수의 중단 조건입니다.