[ALGORITHM] 재귀 호출

2021. 9. 20. 22:36·ALGORITHM & DATA STRUCTURE
728x90

재귀 호출 

  • 함수 안에서 동일한 함수를 호출하는 방법
  • 여러 알고리즘 작성시 사용됨
  • 재귀 호출은 스택의 전형적인 예 (호출함수가 내부적으로 스택처럼 관리됨)
  • 재귀 호출은 중단하기 위한 종료조건문이 필수 

재귀 호출 특징

  • 코드가 간결함
  • 무한 재귀호출의 위험성 (종료조건 실수할 경우), 성능상의 문제

재귀 호출 대표적인 예시 (팩토리얼)

public int factorial(int n) {
    if (n == 1) {
      return 1;
    }
    return n * factorial(n-1);
}
  • 규칙 : n! = n x (n - 1)!, f(1) = 1
  • factorial(n)은 n - 1 번의 factorial() 함수를 호출하여, 곱셉을 함 (n - 1번 반복문을 호출한 것과 동일한 형태)
  • factorial() 함수를 호출할 때마다 지역변수 n이 생성
  • 시간복잡도 공간복잡도 O(n - 1)이므로 둘다 O(n)

재귀 호출 (팩토리얼) 원리

팩토리얼 호출 원리 

  • 함수 호출이 발생하면 이전변수가 스택에 저장
  • 기본 케이스에서 호출 함수로 값을 반환

재귀 호출은 주요 알고리즘의 기본이 되기 때문에 이해 필수임

저작자표시

'ALGORITHM & DATA STRUCTURE' 카테고리의 다른 글

[ALGORITHM] 다익스트라 알고리즘  (0) 2021.09.23
[ALGORITHM] 순차탐색 / 이진탐색  (0) 2021.09.21
[ALGORITHM] 백트래킹  (0) 2021.09.20
[ALGORITHM] LRU 캐시  (0) 2021.08.08
[ALGORITHM] 시간복잡도 / 공간복잡도  (0) 2021.06.19
'ALGORITHM & DATA STRUCTURE' 카테고리의 다른 글
  • [ALGORITHM] 다익스트라 알고리즘
  • [ALGORITHM] 순차탐색 / 이진탐색
  • [ALGORITHM] 백트래킹
  • [ALGORITHM] LRU 캐시
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    SQL
    splunk
    ElasticSearch
    자바
    IntelliJ
    Kafka
    코틀린
    엘라스틱서치
    go
    클린코드
    프로그래머스
    cleancode
    JPA
    이펙티브 코틀린
    Elk
    이펙티브코틀린
    docker
    AWS
    java
    Spring
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[ALGORITHM] 재귀 호출
상단으로

티스토리툴바