Java 기초 함수 - 재귀함수 에러
728x90
기본 환경
JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 |
목표
자바의 재귀함수에서 일어나는 무한루푸 에러에 대해 이해한다.
코드
package ex05method;
public class E08RecursiveError {
public static void main(String[] args) {
showHi(3);
}
/*
1. 감소연산자로 인해 cnt 의 값은 차감되지만..
2. 조건식의 위치가 잘못되어
3. 재귀호출을 하기전 종료체크를 할 수 있도록 수정해야 한다.
stackOverFlow(스택오버플로우)
: 스택은 함수가 종료되기 전까지의 모든 정보를 저장하는 메모리로
유한한 공간이므로 무한푸브에 빠지게 되면 저장능력을 초과하여
해당 에러가 발생하게 된다.
*/
//
// public static void showHi(int cnt) {
// System.out.println("Hi~!");
// System.out.println("cnt = " + cnt);
//
// showHi(--cnt);
// if(cnt == 1) {
// return;
// }
//
// }
//
public static void showHi(int cnt) {
System.out.println("Hi~!");
System.out.println("cnt = " + cnt);
if(cnt == 1) {
return;
}
showHi(--cnt);
/*
감소연산자가 뒤에 있으면 cnt의 값이 갑소하기 전 함수를 호출함으로
무한루프에 빠지게 된다.
*/
}
}
재귀함수의 무한루프 에러이다. 주석한 부분을 실행하거나 cnt--로 로직을 짜게 되면 무한루프에 빠지게된다. 재귀함수를 호출할 때는 조심해서 하도록 하자
에러 결과값
으아 이게 뭐임
정상 결과 값
'Java > Java_기초부터 _끝까지' 카테고리의 다른 글
Java 기초 함수 - 연습문제(2) (0) | 2020.10.19 |
---|---|
Java 기초 함수 - 연습문제(1) (0) | 2020.10.19 |
Java 기초 함수 - 재귀함수 (0) | 2020.10.19 |
Java 기초 함수 - 오버라이딩 (0) | 2020.10.19 |
Java 기초 함수 - 지역 변수 (0) | 2020.10.16 |