본문 바로가기

자바

[자바] 재귀함수와 증감연산자

package com.devjones.web.javaAlgo.tree;

public class RecursionTest {

	public static void main(String[] args) {
		
		hello(0);
	}
	
	static void hello(int i) {
		
		if(i > 10)	return;
		
		System.out.println(i + " 번째 hello 호출");
		hello(i++);
	}
}

 

위와 같이 재귀함수를 통해 hello()를 10번 실행하려했다. 실행결과로 "0 번째 hello 호출"이 6221번 뜨더니 java.lang.StackOverflowError가 걸려버렸다.

다음과 같이 수정한다.

 

package com.devjones.web.javaAlgo.tree;

public class RecursionTest {

	public static void main(String[] args) {
		
		hello(0);
	}
	
	static void hello(int i) {
		
		if(i > 10)	return;
		
		System.out.println(i + " 번째 hello 호출");
		hello(++i);
	}
}

 

 

실행결과:

0 번째 hello 호출
1 번째 hello 호출
2 번째 hello 호출
3 번째 hello 호출
4 번째 hello 호출
5 번째 hello 호출
6 번째 hello 호출
7 번째 hello 호출
8 번째 hello 호출
9 번째 hello 호출
10 번째 hello 호출

 

https://studymake.tistory.com/417

 

자바(JAVA)의 증감 연산자

 증감 연산자 ++와 --는 한 개의 피연산자를 갖는 단항 연산자로서 피연산자를 1씩 증가 혹은 감소시키는 것이다. (증감연산자는 C/C++에서의 용법과 동일하다.) 반복문에서 많이 사용되며 피연산

studymake.tistory.com

위와같은 블로그에서 증감연산자에 대한 주의점을 안내하였는데

 

package com.devjones.web.javaAlgo.tree;

public class RecursionTest {

	public static void main(String[] args) {
		
		hello(0);
	}
	
	static void hello(int i) {
		
		if(i > 10)	return;
		
		System.out.println(i + " 번째 hello 호출");
		
		i++;
		
		hello(i);
	}
}

 

위와같은 안정빵(?) 코드도 나쁘지 않을것같다.

'자바' 카테고리의 다른 글

[자바] 장식자 패턴  (0) 2021.06.03
List의 중복제거, HashSet  (1) 2021.05.24
람다  (0) 2021.04.05
자바에서 제공하는 함수형 인터페이스  (0) 2021.04.05
함수형 인터페이스  (0) 2021.04.05