add link to the new revision of my book, organize the folders to add further examples

This commit is contained in:
Mari Wahl 2014-08-20 15:48:36 -04:00
parent 6d78f5e3fd
commit aa5010594e
140 changed files with 13 additions and 15 deletions

View file

@ -0,0 +1,42 @@
#!/usr/bin/python3
# mari von steinkirch @2013
# steinkirch at gmail
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()