메뉴로 건너 뛰기 내용으로 건너 뛰기
COMMUNITY
Title [Jason Lee] recursion 할 때 stack에서 일어나는 일?
list recursion 27
Author Glo*** Date Posted 2024-12-21 오후 9:03:33

안녕하십니까, 선생님. recursion을 하고 나면 stack에 쌓인 뒤에 끝나고 하나하나 쌓인것들이 나오는 과정이 이해가 안돼서 질문 올립니다..

선생님께서는 강의에서 항상 "기억한다"라고 표현하셔서 잘 이해가 안돼서 인터넷에 검색해보니 선생님께서도 잠간 언급하셨던  stack이라는 개념이 있더라고요..

그래서 그것을 통해 recursion을 이해하려고 하고 있는데요.. 

첨부한 사진 보시면 선생님께서 안된다고 하신 부분 (this doesn't work)이 있는데요, 그 부분의 stack에서는 어떤 일이 벌어지고 있는지 궁금합니다... 비록 그 다음 부분은 ap 범위 밖의 내용이라고 하셔서 이해안돼도 어찌저찌 넘어가려 했는데.. 영상을 몇 번을 돌려봐도 this doesn't work 부분이 왜 안되는지 이해가 안되더라고요.. 이런 문제는 시험에 나올 수도 있다하셔서.. 확실히 이해를 해야 할 것 같아 글을 남깁니다ㅠㅠ 


저는 this doesn't work에서 pyramid(list);로 recursion을 했을 때

stack에서는 

[1, 2, 3, 4]


[1, 2, 3]

[1, 2, 3, 4]


[1, 2]

[1, 2, 3,]

[1, 2, 3, 4]


[1, 2]

[1, 2, 3]

[1, 2, 3, 4]


[1]

[1, 2]

[1, 2, 3,]

[1, 2, 3, 4] 로 저장될 것이라고 생각했습니다. add를 마친 list를 print 했기 때문에 String으로 stack에 저장될거라고 생각했던거 같은데요.. 그래서 recursion이 끝났을 때 


[1]

[1, 2]

[1, 2, 3,]

[1, 2, 3, 4] 로 나올 줄 알았는데

다 []로 나오는 것을 보고 이해가 안 되더라고요.. 

그래서 실험을 해봤습니다. 뒷 부분에 "before add" 로 list.add(r); 의 하기 전도 print해봤는데

실제로 제가 예측한 결과랑 비슷하게 나오더라고요..

this doesn't work랑 다른 점은 int r 에 저장만 했을 뿐.. list.add(r) 도 하기 전인데.. 도대체 무슨 차이가 있었던 건가요?

Attachment 질문[7].jpg
Top