[개발] - Java/Mega
함수의 실행 흐름 - 선입후출 구조
완벽한 장면
2023. 3. 30. 08:52
이 코드는 다음과 같은 실행 순서와 출력 값을 가지게 됩니다:
- Main() 함수가 호출되어 a() 함수가 실행됩니다.
- a() 함수 내부에서 b() 함수가 호출되어 실행됩니다.
- b() 함수 내부에서 c() 함수가 호출되어 실행됩니다.
- c() 함수 내부에서 d() 함수가 호출되어 실행됩니다.
- d() 함수 내부에서 e() 함수가 호출되어 실행됩니다.
- e() 함수에서는 문자열 "E"가 출력됩니다.
- d() 함수로 돌아와서 "D"가 출력됩니다.
- c() 함수로 돌아와서 "C"가 출력됩니다.
- b() 함수로 돌아와서 k() 함수가 호출되어 실행됩니다.
- k() 함수 내부에서는 문자열 "A"가 출력됩니다.
- b() 함수에서는 문자열 "B"가 출력됩니다.
- a() 함수로 돌아와서 k() 함수가 호출되어 실행됩니다.
- k() 함수 내부에서는 문자열 "A"가 출력됩니다.
- a() 함수에서는 문자열 "A"가 출력됩니다.
즉, 전체 출력 결과는 "E D C A B A A"가 됩니다.
이 코드는 호출 스택(Call Stack)이라는 메커니즘에 따라 실행됩니다.
함수가 호출되면 해당 함수의 코드 블록이 실행되기 전에 호출 스택에 함수가 추가됩니다.
함수가 실행을 마치면 호출 스택에서 제거됩니다.
이 코드에서는 함수 a()가 가장 먼저 호출되었기 때문에 호출 스택에는 a(), b(), c(), d(), e(), k() 순으로 추가되었고,
역순으로 제거되면서 실행 결과가 출력됩니다.
728x90
반응형