Files
project_euler/utils/fib_memoization.py
Julien Lengrand-Lambert 1fdf9883b8 Solve a new problem.
Prepares some others. 

More than 35 problem solved ! 

Signed-off-by: Julien Lengrand-Lambert <julien@lengrand.fr>
2012-02-20 16:17:10 +01:00

40 lines
1.0 KiB
Python

#!/usr/bin/env python
'''
Created on 17 feb. 2012
@author: Julien Lengrand-Lambert
@contact: julien@lengrand.fr
'''
import timeit
from memoize import memoize
from Memoized import Memoized
def fib1(n):
"""Returns the n st value of Fibonnacci list"""
if n < 2:
return n
else:
return fib1(n-1) + fib1(n - 2)
@memoize
def fib2(n):
"""Returns the n st value of Fibonnacci list, using memoization"""
if n < 2:
return n
else:
return fib2(n-1) + fib2(n - 2)
@Memoized
def fib3(n):
"""Returns the n st value of Fibonnacci list, using memoization"""
if n < 2:
return n
else:
return fib3(n-1) + fib3(n - 2)
if __name__ == '__main__':
for i in range(3):
t1 = timeit.Timer("fib1(20)", "from __main__ import fib1")
t2 = timeit.Timer("fib2(20)", "from __main__ import fib2")
t3 = timeit.Timer("fib3(20)", "from __main__ import fib3")
print t1.timeit(1), t2.timeit(1), t3.timeit(1)