Skip to content

Instantly share code, notes, and snippets.

@ferdef
Created August 18, 2016 15:14
Show Gist options
  • Save ferdef/d633521ac57570a148137c1a21dc7879 to your computer and use it in GitHub Desktop.
Save ferdef/d633521ac57570a148137c1a21dc7879 to your computer and use it in GitHub Desktop.
from datetime import datetime
from functools32 import lru_cache
NUMBER = 40
def fibonacci_iterative(pos):
first = 0
second = 1
number = 0
counter = 0
while counter < pos:
number = first + second
second = first
first = number
counter += 1
print "Iterative {}".format(number)
def fibonacci_recursive(pos,counter,previous, number):
second = number if number is not 0 else 1
number = previous + number
previous = second
counter += 1
if counter < pos:
fibonacci_recursive(pos, counter, previous, number)
else:
print "Semi-Recursive: {}".format(number)
def fib(n):
return 1 if n <= 2 else fib(n-1) + fib(n-2)
@lru_cache
def fib_cached(n):
return 1 if n <= 2 else fib(n-1) + fib(n-2)
print "Fibonacci Position {}".format(NUMBER)
before = datetime.now()
fibonacci_iterative(NUMBER)
after = datetime.now()
time = after - before
print "Time {}".format(time.microseconds)
before = datetime.now()
fibonacci_recursive(NUMBER, 0, 0, 0)
after = datetime.now()
time = after - before
print "Time {}".format(time.microseconds)
before = datetime.now()
print "Recursive: {}".format(fib(NUMBER))
after = datetime.now()
time = after - before
print "Time {}".format(time.microseconds)
before = datetime.now()
print "Recursive: {}".format(fib_cached(NUMBER))
after = datetime.now()
time = after - before
print "Time {}".format(time.microseconds)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment