#!/usr/local/bin/python3 #!/usr/bin/python # http://www.nishiohirokazu.org/archived_coreblog/829 class Memoize: def __init__(self, func): self.func = func self.cache = {} def __call__(self, *args): if self.cache.has_key(args): return self.cache[args] result = self.func(*args) self.cache[args] = result return result def fibonacci(n): if n == 0 : return 0 elif n == 1 : return 1 else : return fibonacci(n-2) + fibonacci(n-1) fibonacci = Memoize(fibonacci) for i in xrange(1,501): print "F(%d) = %d" % (i, fibonacci(i))