Algorithm | 피보나치 수
2021. 1. 4. 15:27ㆍPython/Algorithms
# 첫 시도: 재귀를 이용
def fibonacci(n):
if n == 0:
return 0
if n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
위 코드의 경우 $n$이 크지 않은 경우 잘 작동하지만, $n$이 30을 넘어가면 시간이 매우 오래 걸린다. 이는 구조상 내부에서 함수를 매우매우매우 많이 반복해야하기 때문이다.
# 메모이제이션
def fibonacci(n):
numbers = [0, 1] # 처음 두 개의 피보나치 수
for i in range(1, n):
numbers.append(numbers[i] + numbers[i-1])
return numbers[n]
위 코드의 경우 피보나치 수를 원소로 하는 리스트를 생성한 후 계속 append하여 $n$ 번째 수를 반환한다.