Java

[method] Java - Recursion (재귀)

1,380
목차
  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

 



분류 제목
basic Java - Home (입문) - 추천 링크
basic Java - Intro (소개) - 용도・특징
basic Java - Start (시작) - 설치・실행・버전확인・한글 깨짐 방지 + 이클립스 (설치/삭제・제거/사용법…
basic Java - Syntax (구문) - main() 메서드, 출력구문
basic Java - Comment (주석)
basic Java - Variable (변수) ★
basic Java - Data Type (데이터 타입) - 자료형 ★
basic Java - Type Casting (데이터 타입 변경) - 자료형 변환
basic Java - Operator (연산자)
basic Java - String (문자열)
basic Java - Math (수학)
basic Java - Boolean (참거짓)
basic Java - If ... Else - (이프 조건문) ★
basic Java - Switch (스위치 조건문) ★
basic Java - While Loop (와일 반복문) ★
1/13
목록
  • 채팅방
  • 필독
1. 채팅창 헤드에서 접속자 확인 2. 닉네임 클릭해 1:1 채팅 가능 3. 닉네임 클릭해 귓속말 가능 4. 닉네임 클릭해 호출하기 가능 5. 우하단 클릭해 환경 설정 가능 6. 의뢰글 작성 후 의뢰 상담 가능 7. 질문글 작성 후 질문 상담 가능 8. 채팅방에 개인정보 입력 금지 9. 채팅방에 광고 욕설 비방 금지
 홈  PC버전 로그인 일본어
웹디자인언어
서버관리언어
고급코딩언어
그누보드
제작의뢰
Q&A
커뮤니티
웹유틸
회원센터
홈짱닷컴 PC버전 로그인