• 회원가입
  • 로그인
  • 구글아이디로 로그인

[method] Java - Recursion (재귀)

1,452  
목차
  1. Java Recursion (재귀)
  2. 재귀 예제
  3. 재귀 무한 반복을 막는 정지 조건

 

Java Recursion (재귀)

※ 메서드는 함수의 일종.

 

1.

재귀 : 함수 안에서 함수 자신 호출.

 

2.

가장 안쪽 함수의 반환값 이용해,

밖으로 거슬러 나오며 결과 반환.

 

※ 사용 시, 주의 !! 

더 간결할 수도, 때론 훨씬 더 복잡할 수도 있음.

또한, 정지조건 없을 시, 무한 반복 되니 주의 !!

 

 

재귀 예제

※ 1부터 4까지 합.

 

public class Hz {

  public static void main(String[] args) {

    int result = sum(4);

    System.out.println(result);

  }

  public static int sum(int k) {

    if (k > 0) {

      return k + sum(k - 1);

    } else {

      return 0;

    }

  }

}

 

결과값: 10


PS. 작동 원리

 

sum(4) = 4 + sum(3)

sum(3) = 3 + sum(2)

sum(2) = 2 + sum(1)

sum(1) = 1 + 0 = 1

sum(2) = 2 + 1 = 3

sum(3) = 3 + 3 = 6

sum(4) = 4  + 6 = 10

 

 

재귀 무한 반복을 막는 정지 조건

 

모든 재귀함수는 정지 조건 (= 재귀 무한 반복 막는 조건)갖어야 함.

위 예제 경우, k=0 조건이 반복 정지 조건.

아래 예제는, end > start 조건이 반복 정지 조건.

 


[예제] 1부터 4까지의 합.


public class Hz {

  public static void main(String[] args) {

    int result = sum(1, 4);

    System.out.println(result);

  }

  public static int sum(int start, int end) {

    if (end > start) {

      return end + sum(start, end - 1);

    } else {

      return end;

    }

  }

}

 

결과값: 10


PS. 작동원리.

 

sum(1, 4) = 4 + sum(1, 3)

sum(1, 3) = 3 + sum(1, 2)

sum(1, 2) = 2 + sum(1, 1)

sum(1, 1) = 1

sum(1, 2) = 2 + 1 = 3

sum(1, 3) = 3 + 3 = 6

sum(1, 4) = 4 + 6 = 10

 



분류 제목
Keyword Java - instanceof 키워드 - 객체가 클래스(또는, 인터페이스)의 인스턴스인지 체크. (= 인스…
Keyword Java - int 키워드 - int 정수 자료형 변수 선언.
Keyword Java - interface 키워드 - 인터페이스 선언
Keyword Java - long 키워드 - long 자료형 정수 담는 변수 선언.
Keyword Java - module 키워드 △ - 모듈 선언.
Keyword Java - native 키워드 △ - 메서드가 동일 Java 소스 파일(다른 언어)에서 구현되지 않도록 지…
Keyword Java - new 키워드 - 새로운 객체 생성 (= new키워드 = 뉴키워드)
Keyword Java - package 키워드 - 패키지 선언.
Keyword Java - private 키워드 - 선언된 클래스 안에서만 접근 가능 설정.
Keyword Java - protected 키워드 - 같은 패키지 및 서브 클래스에서만 접근 가능 설정.
Keyword Java - public 키워드 - 다른 클래스의 접근을 허용. (= 퍼블릭)
Keyword Java - requires 키워드 △ - 모듈 내부에 필요한 라이브러리 지정. (Java 9 이상)
Keyword Java - return 키워드 - 메서드 실행 후, 값을 반환.
Keyword Java - short 키워드 - short 정수 자료형 선언.
Keyword Java - static 키워드 - 객체 생성 없이 바로 접근 가능한 (메서드/속성) 선언.
Keyword Java - strictfp 키워드 △ - 부동 소수점 계산 정밀도 및 반올림 제한.
Keyword Java - super 키워드 - 슈퍼클래스 (= 부모클래스) 객체 의미.
Keyword Java - switch 키워드 - switch 조건문 선언.
Keyword Java - synchronized 키워드 △ - 한 번에 하나의 스레드에서만 메소드에 접근 가능 지정하는 …
Keyword Java - this 키워드 - (메서드・생성자)에서 현재 객체 지칭. (= 디스)
5/10
목록
찾아주셔서 감사합니다. Since 2012