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 |