Misc tools to help with programming more efficently
from rjk_tools.decorators import dynamic_programming
@dynamic_programming
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-1) + fib(n-2)
>>>fib(8)
>>>21
fib(8),fib(7),fib(6),fib(5),fib(4),fib(3),fib(2),fib(1),fib(0),fib(1),fib(2),fib(1),fib(0),fib(3),fib(2),fib(1),fib(0),fib(1),fib(4),fib(3),fib(2),fib(1),fib(0),fib(1),fib(2),fib(1),fib(0),fib(5),fib(4),fib(3),fib(2),fib(1),fib(0),fib(1),fib(2),fib(1),fib(0),fib(3),fib(2),fib(1),fib(0),fib(1),fib(6),fib(5),fib(4),fib(3),fib(2),fib(1),fib(0),fib(1),fib(2),fib(1),fib(0),fib(3),fib(2),fib(1),fib(0),fib(1),fib(4),fib(3),fib(2),fib(1),fib(0),fib(1),fib(2),fib(1),fib(0)
fib(8),fib(7),fib(6),fib(5),fib(4),fib(3),fib(2),fib(1),fib(0)
>>>fib(9)
>>>34
fib(9)