function solution(n) {
function DFS(L) {
if (L == 0) return;
else {
DFS(L - 1);
console.log(L);
}
}
DFS(n);
}
solution(3);
//1
//2
//3
function solution(n) {
function DFS(L) {
if (L == 0) return;
else {
console.log(L);
DFS(L - 1);
}
}
DFS(n);
}
solution(3);
//3
//2
//1
두 코드에서 else 문을 보면 콘솔로그와 DFS 함수의 위치만 바뀌었을뿐인데 출력결과가 반대로 나온다. 그 이유가 뭘까?
첫번째 코드의 스택프레임이다. 따라서 그려보면 왜 그렇게 동작하는지 이해할 수 있었다.
스택프레임은 매개변수와 지역변수 복귀주소정보 등을 가진다.
두번째 코드의 스택프레임은 다음과 같다.
스택프레임 그려볼때 Deps - 라인넘버 로 기록하면 디버깅할때 편하다.
'공부기록 > 자바스크립트 코딩테스트' 카테고리의 다른 글
이진트리 순회 (깊이우선탐색) (0) | 2022.07.06 |
---|---|
[코테강의/JS] 이진수 출력 (0) | 2022.07.06 |
[백준/JS] 20436 ZOAC 3 (0) | 2022.07.06 |
자바스크립트 여러개의 값 반환하기 (0) | 2022.07.06 |
if문 중첩에 관한 고찰 (0) | 2022.07.06 |