이감자의 개발새발 개발일지

재귀호출(recursive call) 본문

개발새발🐶/Java

재귀호출(recursive call)

이 감자 2020. 10. 22. 20:18

재귀호출이란, 특정 메서드 안에서 자기 자신을 호출하여 문제를 해결하는 것을 말한다. 다음은 1부터 10까지의 숫자를 차례대로 출력하고, 출력되는 숫자가 10을 초과할 경우 안내 메세지를 출력한 뒤 종료되는 코드이다.

 

public class Recursive {
	public static int sumCalc(int num) {
    	int i = num + 1;
        
        if(i > 10) {
        	System.out.println("숫자 범위 초과");
            return;
        } else {
        	System.out.println(i);
            sumCalc(i);
        }
    }
    
    public static void main(String[] args) {
    	sumCalc(1);
    }
}

 

재귀호출은 반복문과 호환이 가능하다. 반복문 대신 재귀호출을 사용할 경우 코드의 길이가 짧아지고 코드의 의미를 좀 더 빠르게 파악할 수 있다는 장점이 있다(직관적인 코드). 하지만 재귀가 stack 메모리의 범위를 초과할 때 까지 계속 될 경우(재귀가 깊어진다?) stack overflow가 발생하며 비정상적으로 프로그램이 종료 될 수 있다는 점과 속도나 효율이 반복문보다 떨어진다는 단점이 있다.

'개발새발🐶 > Java' 카테고리의 다른 글

Java 11 버전 설치하기  (0) 2021.08.15
[JSP] MVC 패턴이란?  (0) 2020.11.10
Java 변수  (8) 2020.10.26
Java 언어의 특징과 장점  (2) 2020.10.07
Comments