알고리즘 문제 풀기/알고리즘 정리

피보나치 구현(재귀, 메모이제이션) _ 파이썬

hibscus 2021. 3. 6. 19:52

 

 

 

# 재귀 

def fibo(n):
    if n < 2:
        return n
    return fibo(n - 1) + fibo(n - 2)

for i in range(1, 11):
    print('fibo({}) = {}'.format(i, fibo(i)))



# 재귀 + 메모이제이션

memo = [0] * 11
memo[1] = 1

def fibo_memo(n):
    if n < 2 or memo[n]:
        return memo[n]

    memo[n] = fibo_memo(n - 1) + fibo_memo(n - 2)
    return memo[n]

fibo_memo(10)

for i in range(1, 11):
    print('memo[{}] = {}'.format(i, memo[i]))




# 반복 + 메모이제이션

memo = [0] * 11
memo[1] = 1
for i in range(2, 11):
    memo[i] = memo[i - 1] + memo[i - 2]

for i in range(1, 11):
    print('memo[{}] = {}'.format(i, memo[i]))