상세 컨텐츠

본문 제목

[Python] 다이나믹 프로그래밍(6) - 피보나치 수열(동작분석)

Python/이코테

by Gopythor 2022. 6. 24. 03:02

본문

728x90
반응형
  • 이미 계산된 결과를 메모리에 저장하면 다음과 같이 색칠된 노드만 처리할 것을 기대할 수 있습니다.

  • 실제로 호출되는 함수에 대해서만 확인해보면 다음과 같이 방문합니다.

피보나치 수열: 메모이제이션 동작 분석

  • 메모이제이션을 이용하는 경우 피보나치 수열 함수의 시간 복잡도는 O(N)입니다.
d = [0] * 100

def fibo(x):
    print('f(' + str(x) + ')', end=' ')
    if x == 1 or x == 2:
        return 1
    if d[x] != 0:
        return d[x]
    d[x] = fibo(x - 1) + fibo(x - 2)
    return d[x]

fibo(6) 
# f(6) f(5) f(4) f(3) f(2) f(1) f(2) f(3) f(4)
728x90
반응형

관련글 더보기

댓글 영역