퀴즈 / 알고리즘 / 문제

피보나치 수열을 재귀로 구현할 때 시간 복잡도가 O(2^n)인 이유와 개선 방법은?

보통 freeCodeCamp
보기 및 정답
A 같은 값을 중복 계산하기 때문이며, 메모이제이션이나 상향식 DP로 O(n)으로 개선할 수 있다
B 재귀 호출이 각 단계에서 1번만 일어나기 때문에 호출 트리가 선형적으로 증가한다
C 피보나치 수열은 재귀적 특성 때문에 어떠한 최적화 기법으로도 개선할 수 없는 문제이다
D 재귀를 반복문으로 변환하더라도 동일한 중복 계산이 그대로 발생하므로 시간 복잡도는 전혀 변하지 않는다

해설

fib(n) = fib(n-1) + fib(n-2)로 구현하면 fib(3)이 수십 번 중복 호출됩니다. 메모이제이션(하향식 DP)으로 계산 결과를 저장하거나, 반복문(상향식 DP)으로 아래부터 차례로 계산하면 O(n)으로 개선됩니다.

코딩, 제대로 배우고 싶다면?

개념 확인은 퀴즈로, 실력은 실전 프로젝트로.
투더제이 코딩클래스에서 시작하세요.

정규반 살펴보기
START THE LOOP · CHOOSE

시장과 사람의 답을 봤다면,
다음 결과물의 구조를 고릅니다.

한 번의 결과에 기대지 않고 다시 만들 수 있도록, 문제 발견부터 제작·배포·수익화까지 이어지는 전체 흐름을 익혀보세요.

TTJ CLASS에서 다음 구조 고르기
처리 중...