[Java] 재귀(Recursion) 함수란? 쉽게 이해해보자

2023. 3. 21. 20:21·Java

Recursive 함수란 무엇인가?

Recursive 함수는 자신을 다시 호출하여 문제를 해결하는 함수입니다. 이러한 방법을 이용하면 반복문 대신 문제를 더욱 간결하고 쉽게 해결할 수 있습니다.

 

Recursive 함수의 특징은 무엇인가?

Recursive 함수는 일반적으로 다음과 같은 특징을 가집니다.
자기 자신을 호출하는 방법으로 문제를 해결합니다.

 

Base case(기본 경우)와 Recursive case(재귀적인 경우)로 구분됩니다.

  • Base case: 재귀 호출을 멈추는 조건을 나타냅니다.
  • Recursive case: 재귀 호출이 반복적으로 일어나는 부분입니다.

Recursive 함수 예시를 쉽게 설명해보자

예시: 팩토리얼 계산 함수
예시 설명: 팩토리얼은 1부터 n까지의 정수를 곱한 값입니다. 팩토리얼 계산 함수를 Recursive 함수로 작성해보겠습니다.

public static int factorial(int n) {
    // Base case: n이 1 이하일 경우 1을 반환
    if (n <= 1) {
        return 1;
    }
    // Recursive case: n-1에 대한 팩토리얼 값을 구하고 n과 곱셈
    else {
        return n * factorial(n-1);
    }
}

위의 함수에서 Base case는 n이 1 이하일 경우이며, 이 경우에는 1을 반환합니다. Recursive case는 n-1에 대한 팩토리얼 값을 구하고 n과 곱셈하는 부분입니다. 이러한 방법으로 재귀적으로 문제를 해결할 수 있습니다.


Recursive 함수 사용시 주의사항

Recursive 함수를 사용할 때 주의할 점은 다음과 같습니다.

  • 너무 많은 Recursive 호출은 스택 오버플로우(Stack Overflow)를 일으킬 수 있습니다.
  • Recursive 호출을 멈추는 Base case를 반드시 포함해야 합니다.
  • Recursive 함수를 이용하면 반복문 대신 문제를 더욱 간결하고 쉽게 해결할 수 있지만, 가독성이 떨어질 수 있으므로 적절한 사용이 필요합니다.

저작자표시 비영리 변경금지 (새창열림)
'Java' 카테고리의 다른 글
  • [Java] 단일 링크드 리스트(Singly Linked-List) 간단하게 정의 및 구현 - 1
  • [Java] 블랙 박스 테스트 & 화이트 박스 테스트 & 커버리지(Coverage) 예시
  • [Java] 자바에서 ConcurrentModificationException이 발생하는 이유와 해결 방법 | Map.keySet()
  • [Java] Collection | 자바 List | ArrayList | 다양한 메소드
Jelong
Jelong
커스텀 웹: https://jaehong-park.com Github: https://github.com/qkrwoghd04
  • Jelong
    24/7 Developer's Note
    Jelong
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Software Engineering
      • Ubuntu
      • Network
      • JavaScript
      • Web
      • Interaction Design
      • React Native
      • React
      • Algorithm
      • Java
      • Database design
      • IT Trend
      • TroubleShooting
      • AWS
      • Interview
      • LG CNS AM CAMP 1기
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘 분석
    ChatGPT
    이진트리
    알고리즘
    블랙 박스 테스트
    GPT-4
    JS
    데이터 구조
    React
    자바
    css
    frontend
    mininet
    자바스크립트
    Queues
    미니넷
    expo
    generic
    typescript
    오블완
    BST
    소프트웨어 공학
    티스토리챌린지
    prototyping
    AWS
    java
    javascript
    화이트 박스 테스트
    html
    heap
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Jelong
[Java] 재귀(Recursion) 함수란? 쉽게 이해해보자
상단으로

티스토리툴바