코드 그라데이션

함수의 실행 흐름 - 선입후출 구조 본문

Java/Mega

함수의 실행 흐름 - 선입후출 구조

완벽한 장면 2023. 3. 30. 08:52

이 코드는 다음과 같은 실행 순서와 출력 값을 가지게 됩니다:

  1. Main() 함수가 호출되어 a() 함수가 실행됩니다.
  2. a() 함수 내부에서 b() 함수가 호출되어 실행됩니다.
  3. b() 함수 내부에서 c() 함수가 호출되어 실행됩니다.
  4. c() 함수 내부에서 d() 함수가 호출되어 실행됩니다.
  5. d() 함수 내부에서 e() 함수가 호출되어 실행됩니다.
  6. e() 함수에서는 문자열 "E"가 출력됩니다.
  7. d() 함수로 돌아와서 "D"가 출력됩니다.
  8. c() 함수로 돌아와서 "C"가 출력됩니다.
  9. b() 함수로 돌아와서 k() 함수가 호출되어 실행됩니다.
  10. k() 함수 내부에서는 문자열 "A"가 출력됩니다.
  11. b() 함수에서는 문자열 "B"가 출력됩니다.
  12. a() 함수로 돌아와서 k() 함수가 호출되어 실행됩니다.
  13. k() 함수 내부에서는 문자열 "A"가 출력됩니다.
  14. a() 함수에서는 문자열 "A"가 출력됩니다.

즉, 전체 출력 결과는 "E D C A B A A"가 됩니다.

 

이 코드는 호출 스택(Call Stack)이라는 메커니즘에 따라 실행됩니다.

함수가 호출되면 해당 함수의 코드 블록이 실행되기 전에 호출 스택에 함수가 추가됩니다.

함수가 실행을 마치면 호출 스택에서 제거됩니다.

이 코드에서는 함수 a()가 가장 먼저 호출되었기 때문에 호출 스택에는 a(), b(), c(), d(), e(), k() 순으로 추가되었고,

역순으로 제거되면서 실행 결과가 출력됩니다.

 

 

 
728x90
Comments