# Brute Force
def bruteForce(n):
if n <= 1:
return n
return bruteForce(n - 1) + bruteForce(n - 2)
# Memoization
def memoization(n, cache):
if n <= 1:
return n
if n in cache:
return cache[n]
cache[n] = memoization(n - 1) + memoization(n - 2)
return cache[n]
# Dynamic Programming
def dp(n):
if n < 2:
return n
dp = [0, 1]
i = 2
while i <= n:
tmp = dp[1]
dp[1] = dp[0] + dp[1]
dp[0] = tmp
i += 1
return dp[1]```