재귀함수는 스택이라는 자료 구조를 사용한다.

자신이 자신을 호출 하는것을 재귀 함수 라고 한다.

계속 무한으로 자신을 호출하면서 실행한다. → 무한으로 호출되니 멈추게 해야한다.

if문을 통해 제한을 걸어준다.

재귀의 동작 방식

재귀를 사용해서 1, 2, 3 을 출력해라.

함수를 호출하면 그 함수가 작업을 한줄 한줄 진행하다가, 자기 자신함수를 만나게 되면 그 밑에 남은 작업들을 끝내지 않고 == 대기하고 함수를 호출 스택에 다시 자기 자신함수를 올려놓는다. (그것을 반복 반복해서 계속 스택에 쌓는다.)

스크린샷 2022-09-03 오후 5.22.35.png

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>

그때의 매개 변수 값을 기억하자!