[Java]공부 재귀함수(recursion)

ohjihyung·2022년 6월 16일
0
post-thumbnail

재귀함수를 잘몰라 어떻게 돌아가는지 궁금해서 혼자 공부를 해보았다....
자기 자신을 호출한다는 뜻만 흐릿하게 알고 있었기에 자세히 들어다 보기로 하였다.

실행 코드

	public static void recursionMethod(int n) {
		System.out.println("recursionMethod call!! n=" + n);
		if(n == 0) {
			return;
		}
		recursionMethod(n-1);
		System.out.println("recursionMethod returned n!! n =" + n);	
	}
	public static void main(String[] args) {
		recursionMethod(4);
	}
}

결과값

recursionMethod call!! n=4
recursionMethod call!! n=3
recursionMethod call!! n=2
recursionMethod call!! n=1
recursionMethod call!! n=0
recursionMethod returned n!! n =1
recursionMethod returned n!! n =2
recursionMethod returned n!! n =3
recursionMethod returned n!! n =4

기본적으로 call 을하여 n = 4 --> n = 0 으로 가는 이유는 이해가 갔지만
return 하는 순서가 n = 1 --> n = 4 까지 가는 이유가 너무 궁금하여 조사를 해보았다.

메서드 영역 n = 4가 먼저 만들어지고 코드가 동작이 된다
재귀를 통해 계속 새로운 영역이 만들어지다
if(n == 0) {return;} 을 만나면
메서드 종료 되게되어 할게 없어
recursionMethod(n-1); 을 들어가게 되어
메인 위치인 n = 4 부분에 도착하게 되면 최초로 호출했던 main으로 이동하게 되는 원리이다

부메랑을 생각하면 된다
call(4) -> call(3) - > call(2) -> call(1) -> call(0) - > return(1) ->return(2)->return(3) ->return(4)

profile
웹 개발자의 기초부터 심화까지

0개의 댓글