Recursive Call, Recursive Function   재귀 호출, 재귀 함수, 순환 함수

(2019-01-14)

재귀, Recursion

1. [ 프로그래밍 ]  순환 함수, 재귀 함수, 재귀 서브프로그램재귀 함수 / 순환 함수 (Recursive Function) / 재귀 서브프로그램
     - 함수 정의에서 그 자신의 함수를 사용하며 정의함
        . 마치 루프처럼 어떤 일을 반복적으로 수행하는데에 유리함
        . 트리연결 리스트와 같은 컴퓨터 자료구조에 유용

     - 例) 피보나치 수열의 정의 : (직전 2개 항의 합으로 정의됨)
        . fib(0) = 0; fib(1) = 1; fib(n) = fib(n-1) + fib(n-2), (n>2);

  ㅇ 재귀 함수 특징
     - 루프와 달리 재귀함수는,
        . 메모리에 함수 복사본을 반복적으로 만들기 때문에,
        . 루프 보다 느리고 더 많은 메모리가 필요
     - 프로그램을 이해하기 쉽고, 간결하게 작성 가능
     - 내포 구조(nested)로 된 데이터를 다루기에 적합함
        . 재귀 호출시 함수코드도 데이터 처럼 내포된 구조로써 포함되는
        . 추상 자료형 형태로도 볼 수 있음

  ㅇ 재귀 함수 형태
     - ① 종료 조건 (base case)
        . 먼저, 재귀 호출의 종료 여부를 판단할 수 있도록 함
        . 충분히 작아진 문제에서, 직접 해결 (그 결과를 바로 윗선에 반환)
     - ② 재귀 호출 (recursive case)
        . 각 단계 마다, 종료 조건에 접근하도록 그 자신을 재귀적으로 호출
        . 원래 문제 보다 작아진 부문제를 대상으로 함

  ㅇ 한편, 
     - 재귀기법은 반복기법으로도 프로그래밍 구현이 가능            ☞ 반복문 참조
     - 다만, 재귀(순환)은, 반복 보다 훨씬 명확하고 간결하게 표현 가능
     - 결국, 프로그래밍 용이성 및 메모리 소요 크기로써 이 둘 (재귀/반복) 중에 선택 필요


[알고리즘] 1. 알고리즘 2. 알고리즘 설계 3. 계산 복잡도 4. 하노이 탑 5. 순서도 6. 재귀 호출
[알고리즘 종류]
  1.   기술공통
  2.   기초과학
  3.   진동/파동
  4.   방송/멀티미디어/정보이론
  5.   전기전자공학
  6.   통신/네트워킹
  7.   정보기술(IT)
        1. 정보기술
    1.   전산기초
    2.   컴퓨터구조
    3.   프로그래밍
          1. 프로그램,프로그래밍
      1.   프로그래밍 언어론
      2.   구조적 프로그래밍
      3.   객체지향 프로그래밍
      4.   자료표현코드
      5.   자료구조
      6.   알고리즘
            1. 알고리즘
            2. 알고리즘 설계
            3. 계산 복잡도
            4. 하노이 탑
            5. 순서도
            6. 재귀 호출
        1.   알고리즘 종류
      7.   시스템 소프트웨어
      8.   프로그래밍언어 종류
      9.   프로그래밍 기타일반
    4.   데이터베이스
    5.   소프트웨어 공학
    6.   운영체제
    7.   정보보호/보안
    8.   IT 기타기술
  8.   공업일반(기계,재료등)
  9.   표준/계측/품질
  10.   기술경영

 
        최근수정     요약목록     참고문헌