es6 함수 의 끝 재 귀 용법 사례 분석

2058 단어 es6함수.후처
본 논문 의 사례 는 es6 함수 의 끝 재 귀 용법 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
함수 가 자신 을 호출 하 는 것 을 재 귀 라 고 합 니 다.만약 에 꼬리 가 자신 을 호출 하면 꼬리 재 귀 라 고 합 니 다.
재 귀 는 메모 리 를 매우 소모 한다.수천 수백 개의 호출 프레임 을 동시에 저장 해 야 하기 때문에'스 택 넘 침'오류 가 발생 하기 쉽다(stack overflow).그러나 끝 재 귀 에 있어 하나의 호출 프레임 만 존재 하기 때문에'스 택 넘 침'오류 가 발생 하지 않 습 니 다.

function factorial(n) {
 if (n === 1) return 1
 return n * factorial(n - 1)
}

마지막 재 귀적 으로 바 뀌 면 호출 기록 하나만 남 겨 두 고 복잡 도 O(1)

function factorial(n, total = 1) {
if (n === 1) return total
return factorial(n - 1, n * total)
}

factorial(5)

끝 이 아 닌 피 보 나치 수열 은 다음 과 같다.

function Fibonacci (n) {
 if ( n <= 1 ) {return 1};

 return Fibonacci(n - 1) + Fibonacci(n - 2);
}

Fibonacci(10) // 89
Fibonacci(100) //     
Fibonacci(500) //     

끝 재 귀적 최 적 화 된 피 보 나치 수
열 은 아래 와 같다.

function Fibonacci2 (n , ac1 = 1 , ac2 = 1) {
 if( n <= 1 ) {return ac2};

 return Fibonacci2 (n - 1, ac2, ac1 + ac2);
}

Fibonacci2(100) // 573147844013817200000
Fibonacci2(1000) // 7.0330367711422765e+208
Fibonacci2(10000) // Infinity

끝 재 귀적 실현 은 종종 재 귀적 함 수 를 바 꾸 어 마지막 단계 에서 자신 만 호출 할 수 있 도록 해 야 한다.이 를 실현 하 는 방법 은 모든 내부 변 수 를 함수 의 매개 변수 로 바 꾸 는 것 이다.
함수 식 프로 그래 밍 은 코 리 화(currying)라 는 개념 이 있 는데 다 중 매개 변수의 함 수 를 단일 매개 변수 로 바 꾸 는 것 을 의미한다.이곳 은 코 리 화 를 사용 할 수 있다.

function currying(fn, n) {
return function(m) {
return fn.call(this, m, n)
}
}

관심 있 는 친 구 는 온라인 HTML/CSS/JavaScript 코드 실행 도 구 를 사용 할 수 있 습 니 다.http://tools.jb51.net/code/HtmlJsRun상기 코드 실행 효 과 를 테스트 할 수 있 습 니 다.
더 많은 자 바스 크 립 트 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기