자바 튜토리얼

자바 홈 자바 소개 자바 시작하기 자바 구문 자바 주석 자바 변수 자바 데이터 유형 자바 타입 캐스팅 자바 연산자 자바 문자열 자바 수학 자바 부울 자바 If...Else 자바 스위치 자바 while 루프 자바 For 루프 자바 중단/계속 자바 배열

자바 메소드

자바 메소드 자바 메소드 매개변수 자바 메소드 오버로딩 자바 범위 자바 재귀

자바 클래스

자바 OOP 자바 클래스/객체 자바 클래스 속성 자바 클래스 메소드 자바 생성자 자바 수정자 자바 캡슐화 자바 패키지 / API 자바 상속 자바 다형성 자바 내부 클래스 자바 추상화 자바 인터페이스 자바 열거형 자바 사용자 입력 자바 날짜 자바 배열 목록 자바 링크드리스트 자바 해시맵 자바 해시셋 자바 반복자 자바 래퍼 클래스 자바 예외 자바 정규식 자바 스레드 자바 람다

자바 파일 처리

자바 파일 자바 파일 생성/쓰기 자바 읽기 파일 자바 삭제 파일

자바 방법

두 개의 숫자 더하기

자바 참조

자바 키워드 자바 문자열 메소드 자바 수학 메소드

자바 예제

자바 예제 자바 컴파일러 자바 연습 자바 퀴즈 자바 인증서


자바 재귀


자바 재귀

재귀는 함수 자체를 호출하는 기술입니다. 이 기술은 복잡한 문제를 해결하기 쉬운 간단한 문제로 나누는 방법을 제공합니다.

재귀는 이해하기 다소 어려울 수 있습니다. 어떻게 작동하는지 알아내는 가장 좋은 방법은 실험하는 것입니다.


재귀 예제

두 숫자를 더하는 것은 쉽지만 숫자 범위를 더하는 것은 더 복잡합니다. 다음 예에서 재귀는 두 개의 숫자를 더하는 간단한 작업으로 나누어 숫자 범위를 더하는 데 사용됩니다.

예시

10까지의 모든 숫자를 더하려면 재귀를 사용하십시오.

public class Main {
  public static void main(String[] args) {
    int result = sum(10);
    System.out.println(result);
  }
  public static int sum(int k) {
    if (k > 0) {
      return k + sum(k - 1);
    } else {
      return 0;
    }
  }
}

예시 설명

sum()함수가 호출되면 그보다 작은 모든 숫자의 합에 매개변수를 추가 하고 k결과 k를 반환합니다. k가 0이 되면 함수는 0을 반환합니다. 실행할 때 프로그램은 다음 단계를 따릅니다.

10 + 합(9)
10 + ( 9 + 합(8) )
10 + ( 9 + ( 8 + 합(7) ) )
...
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 합(0)
10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0

가 0일 때 함수는 자신을 호출하지 않기 때문에 k프로그램은 거기서 멈추고 결과를 반환합니다.


정지 상태

루프가 무한 루프 문제에 부딪힐 수 있는 것처럼 재귀 함수는 무한 재귀 문제에 부딪힐 수 있습니다. 무한 재귀는 함수가 자체 호출을 멈추지 않는 경우입니다. 모든 재귀 함수에는 함수가 자체 호출을 중지하는 조건인 정지 조건이 있어야 합니다. 앞의 예에서 정지 조건은 매개변수 k가 0이 될 때입니다.

개념을 더 잘 이해하려면 다양한 예를 보는 것이 도움이 됩니다. 이 예에서 함수는 시작과 끝 사이에 숫자 범위를 추가합니다. 이 재귀 함수의 정지 조건은 end 가 start 보다 크지 않을 때입니다 .

예시

재귀를 사용하여 5에서 10 사이의 모든 숫자를 더합니다.

public class Main {
  public static void main(String[] args) {
    int result = sum(5, 10);
    System.out.println(result);
  }
  public static int sum(int start, int end) {
    if (end > start) {
      return end + sum(start, end - 1);
    } else {
      return end;
    }
  }
}