andymon   3년 전

변수가 지정되면 계속 그위에 덧붙여 저장되는거 아닌가요?

왜 재귀함수를 하면 메모리를 많이 잡아먹나요?

매번 실행될때마다 새로운 주소에 저장되는 건가요?

djm03178   3년 전

재귀함수의 호출은 일반 함수의 호출과 다를 게 없습니다. a라는 함수가 26번 재귀호출되는 것과, a가 b를 호출하고 b가 c를 호출하고 c가 d를 호출하고... y가 z를 호출하는 것은 똑같이 26의 함수 호출 깊이가 만들어집니다. 각 함수 호출에서 만들어지는 변수들은 스택 영역에 차곡차곡 쌓이고, 리턴을 하기 전까지 유지됩니다.

andymon   3년 전

그러면 재귀함수를 써서 메모리가 초과가 된경우에는 재귀함수중에 제대로 리턴이 되지 않은 부분이 있어서(무한 재귀함수) 스택 영역이 꽉차서 메모리초과가 나는 것인가요??

djm03178   3년 전

그랬을 가능성도 있습니다.

andymon   3년 전

알겠습니다! 조언 감사합니다

댓글을 작성하려면 로그인해야 합니다.