재귀함수는 스택이라는 자료 구조를 사용한다.
자신이 자신을 호출 하는것을 재귀 함수
라고 한다.
계속 무한으로 자신을 호출하면서 실행한다. → 무한으로 호출되니 멈추게 해야한다.
if문을 통해 제한을 걸어준다.
재귀를 사용해서 1, 2, 3 을 출력해라.
함수를 호출하면 그 함수가 작업을 한줄 한줄 진행하다가, 자기 자신함수를 만나게 되면 그 밑에 남은 작업들을 끝내지 않고 == 대기하고 함수를 호출 스택에 다시 자기 자신함수를 올려놓는다. (그것을 반복 반복해서 계속 스택에 쌓는다.)
L == 0 이라는 조건에 걸려 DFS(0)은 실행이 종료되고,
DFS(1)에서 남은 작업 ( 13번째 줄 )
console.log(L)이 실행되고 1을 찍는다.
DFS(2)에서 남은 작업 (13번째 줄)
console.log(L)이 실행되고 2를 찍는다.
DFS(3)에서 남은 작업 (13번째 줄)
console.log(L)이 실행되고 3을 찍는다.
<aside> 💡 재귀함수는 자기자신이 호출되는 지점 전까지 명령을 수행하고, 중지한후, 스택에 계속 쌓인다. 스택이 쌓이고, 실행 될때 자기 자신이 호출 당했던 다음 줄 부터 실행된다.
</aside>
그때의 매개 변수 값을 기억하자!