Every time you are using a tree or converting Something into a tree, consider recursion.
Then, Divide and Conquer using Recursion
아래 코드를 Chrome console에서 실행시켜본다.
let counter = 0;
function inception() {
debugger;
if (counter > 3) {
return 'done'; // 1. Base case
}
counter++;
return inception(); // 2. Recursive Case
}
inception()
이미지를 보면, 왼쪽아래 Call Stack이 쌓인다. 오른쪽아래 Scope에서 현재 Return Value를 볼 수 있다. debugger를 통해서 Recursion의 Call Stack에서의 Return Value를 확인할 수 있는 것이다.
Tail Call Optimization