재귀: 함수가 자기 자신을 호출하는 순간
모든 재귀 함수는 3가지 key feature를 가져야 한다.
1. A Termination Condition
if (something bad happened ) { STOP };
fail-safe. 비상 브레이크.
재귀함수의 무한 반복 방지.
2. A Base Case
if (this happens) { Yay! We're done };
3. The Recursion
함수가 자기 자신을 호출하도록 한다.
예시1)
function factorial(x) {
if (x < 0) return; // TERMINATION
if (x === 0) return 1; // BASE
return x * factorial(x - 1); // RECURSION
}
factorial(3);
// 6
이것을 실행시키면
factorial(3)
= 3 * factorial(2)
= 3 * 2 * factorial(1)
= 3 * 2 * 1 * factorial(0)
= 3 * 2 * 1 * 1 → return (Base Case)
예시2)
function revStr(str){
if (str === '') return ''; // BASE
return revStr(str.substr(1)) + str[0]; // RECURSION
}
revStr('cat');
// tac
여기서는 Base Case = Termination Case라서
Termination Case가 따로 없다.
substr() 메소드는 string의 ()안의 위치부터 끝까지 반환한다.
ex) 'cat'substr(1) === 'at'
str[] 메소드는 []안의 인덱스의 글자를 반환한다.
ex) cat[0] === 'c'
그래서 이것을 실행시키면
return revStr(str.substr(1)) + str[0] // cat
→ return revStr('at') + 'c' // tac
→ return revStr('t') + 'a' // ta
→ return revStr('') + 't' // t
→ if (str === '') return ''; ↑거꾸로 올라가면
→ return ‘’ + ‘t’ + ‘a’ + ‘c’ // tac
https://codeburst.io/learn-and-understand-recursion-in-javascript-b588218e87ea
Learn and Understand Recursion in JavaScript
I’ll walk you through two popular JS recursion examples in 10 minutes so you can finally understand how recursion works in JavaScript.
codeburst.io
'공부_정리☆★' 카테고리의 다른 글
정리_JavaScript 총정리 - 목차 (0) | 2020.07.04 |
---|---|
JavaScript_최소값과 합을 구하는 알고리즘에 대한 고찰 (작성중) (0) | 2020.06.29 |
정리_JavaScript - 반복문 - forEach, for...of, for...in (0) | 2020.06.27 |
정리_JavaScript - 루프와 반복 - label, break, return, continue (0) | 2020.06.26 |
정리_정규표현식 (2) | 2020.06.26 |
댓글