mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-29 12:16:14 -04:00
43 lines
772 B
Python
43 lines
772 B
Python
#!/usr/bin/python3
|
|
|
|
__author__ = "bt3"
|
|
|
|
|
|
from functools import wraps
|
|
from do_benchmark import benchmark
|
|
|
|
def memo(func):
|
|
''' an example of dynamic programming using a memoizing decorator '''
|
|
cache = {}
|
|
@wraps(func)
|
|
def wrap(*args):
|
|
if args not in cache:
|
|
cache[args] = func(*args)
|
|
return cache[args]
|
|
return wrap
|
|
|
|
@memo
|
|
def find_fibonacci_seq_rec(n):
|
|
''' implements the nth fibonacci value in a recursive exponential runtime '''
|
|
if n < 2: return n
|
|
return find_fibonacci_seq_rec(n - 1) + find_fibonacci_seq_rec(n - 2)
|
|
|
|
def test_memo():
|
|
n = 50
|
|
# find_fibonacci_seq_rec = memo(find_fibonacci_seq_rec)
|
|
# @benchmark
|
|
print(find_fibonacci_seq_rec(n))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
test_memo()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|