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상기 코드 실행 효 과 를 테스트 할 수 있 습 니 다.더 많은 자 바스 크 립 트 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JavaScript로 카드 놀이를 넘기는 애니메이션을 만들려고했습니다.카드를 넘기는 애니메이션을 만들어 보았습니다. 폴더 구성은 다음과 같습니다. 코드는 다음과 같습니다. card_turning.html 다음은 JavaScript 코드입니다. cardTurning.js 결과는, 이런 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.