def fibo_stack(n):
    answer = 0
    stack = [n]
    while stack:
        item = stack.pop()
        if item <= 1:
            answer += 1
        else:
            stack.append(item - 1)
            stack.append(item - 2)
    return answer
    
    
def fibo_recurive(n):
    if n <= 1:
        return 1
    return fibo_recurive(n - 1) + fibo_recurive(n - 2)


def fibo_queue(n):
    answer = 0
    queue = [n]
    while queue:
        item = queue.pop(0)
        if item > 1:
            queue.append(item - 1)
            queue.append(item - 2)
        else:
            answer += 1
    return answer
    
    
def fibo_loop(n):
    answer = 1
    prev = 0
    for i in range(n):
        answer, prev = answer + prev, answer
    return answer
    
    
def fibo_memo(n):
    d = [1, 1]
    for i in range(1, n):
        d.append(d[i] + d[i - 1])
    return d[n]
    
    
def fibo_recursive_memo(n, d={0: 1, 1: 1}):
    if n in d:
        return d[n]
    d[n] = fibo_recursive_memo(n - 1) + fibo_recursive_memo(n - 2)
    return d[n]


스택 자료구조로 루프 하는거 메모이제이션 하고 싶은데 못하겠음