.
.
백준 5639번 이진 검색 트리 문제를 풀었을 때, 익숙치 않았던 재귀함수 파트가 나와 머리가 아팠던 적이 있어 직접 간단하게 재귀함수가 어떻게 호출 -> 복귀 되는지 코드로 알아보았습니다.
import java.util.Scanner;
public class Main {
public static void recurse(int start,int end) {
if(start > end) {
System.out.println("!! recursion" + "(" + start + "," + end + ") 입니다. 함수를 return 합니다 !! ");
return;
}else {
System.out.println("recursion" + "(" + start + "," + end + ") 를 호출");
end --;
recursion(start,end);
System.out.println("recursion" + "(" + start + "," + end + ") 로 복귀");
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
recursion(2,n);
}
}
< 입력 >
5
< 출력 >
recursion(2,5) 를 호출
recursion(2,4) 를 호출
recursion(2,3) 를 호출
recursion(2,2) 를 호출
!! recursion(2,1) 입니다. 함수를 return 합니다 !!
recursion(2,1) 로 복귀
recursion(2,2) 로 복귀
recursion(2,3) 로 복귀
recursion(2,4) 로 복귀
그림으로 알아보면 호출 할 함수를 Funtion(int n) 이라 했을때 다음과 같이 동작합니다.
그림은 https://lktprogrammer.tistory.com/106 에서 참고 했습니다..!
이렇게 유용한 정보를 공유해주셔서 감사합니다.