🥲2022.12.10

일일 회고 115일차

할일 및 한일

경험 및 배움

오늘은 컨디션이 좋지 않아서 자바 프로젝트는 월요일로 미뤄야할 것 같다.

자료구조 8장(재귀 호출) 마무리

재귀 호출과 반복 호출에 대해 학습해보았다.

반복 호출과 비교하여 재귀 호출이 가지는 가장 큰 장점은 알고리즘의 간결성과 명확성으로, 반복 호출에 비해 훨씬 명확하고 간결하다. 하지만 단점으로는 시스템 스택을 사용하므로 수행 시간이 더 오래 걸리며, 스택 메모리 문제가 발생할 수 있다는 단점이 있다.

재귀와 반복은 서로 변경해서 구현할 수 있는데, 꼬리 재귀 호출일 경우 쉽게 반복 호출로 변경할 수 있다고 한다.

다음은 재귀 호출 방식으로 구현한 피보나치 수열 함수이다.

int fib(int n) {
    int ret = 0;

    if (n == 0) {
        ret = 0;
    } else if (n == 1) {
        ret = 1;
    } else {
        ret = fib(n - 1) + fib(n - 2);
    }

    return ret;
}

위의 코드를 반복 호출 방식으로도 변경할 수 있다.

int fib_iter(int n) {
    int ret = 0;

    if (n < 2) {
        ret = n;
    } else {
        int i = 0, temp = 0, current = 1, last = 0;

        for (i = 2; i <= n; i++) {
            temp = current;
            current += last;
            last = temp;
        }

        ret = current;
    }

    return ret;
}

자세한 정리 내용은 학습하여 정리한 링크를 첨부한다.

개선 및 목표

  • 월요일이 이번 학기 마지막 시험이다. 내일만 전공 공부에 시간을 투자하자!

Last updated