<오늘의 목표>

[자바와 함께하는 자료구조의 이해] 교재 대단원 1단원 공부 및 내용 정리

 

관련 연습 문제 풀기

 

 

 

<활동 내역>

순환은 메소드의 실행 과정 중 메소드 자신을 호출하는 것이다.

프랙탈과 유사한 형태를 띄고 있다.

 

순환은 기본(base) case와 순환 case가 있다.

기본 case는 호출하지 않는 부분이고 순환 case는 스스로를 호출하는 부분이다.

호출하는 과정에서 무한 호출을 방지해야 한다. (그렇지 않으면 StackoverflowError가 날 수 있음)

방지 하기 위해서 매소드 내부에서 자신을 호출하는 과정에서 매개 변수를 감소시켜주는 방법을 사용할 수 있는데,

이 때 if문을 사용해서 변수를 검사해야 한다.

 

꼬리 순환이란 메소드의 마지막 부분에 부분에서 순환하되,

수행할 연산이 없는 경우를 의미한다.

이 경우에 최척화가 되면 반복문으로 변환되어 수행되므로 메모리 사용 측에서 효율적이다.

 

일반적으로 순환은 가독성을 높일 수 있지만, 시스템 스택을 사용하기 때문에 메모리 사용 측면에서 비효율적이다.

 

public static void g(int n) {
    if (n > 0) g(n-1);
    System.out.print(n);
}

실행 결과 : 01234

 

public static void h(int n) {
    System.out.print(n);
    if (n > 0) h(n-2);
    System.out.print(n);
}

실행 결과 : 420024

 

public static void h(int n) {
    if (n > 0) {
        h(n-1);
        System.out.print(n);
    }
}

실행 결과 : 1234

 

 

 

 

<회고>

순환이 재귀 호출이랑 내용이 비슷한 것 같다.

프로그래밍을 하는 과정에서도 언어에 따라 형태가 다른 듯,

하나의 것도 여러 형태로 불리운다는 점에서 java 역시 하나의 언어라는 생각이 들어 친근감이 느껴졌다.

 

'2025하계모각코_조서희' 카테고리의 다른 글

20250807  (2) 2025.08.07
20250802  (0) 2025.08.02
20250729  (1) 2025.07.29
20250708  (2) 2025.07.08
20250705  (3) 2025.07.05

+ Recent posts