Skip to content

Instantly share code, notes, and snippets.

@allieus
Created January 8, 2013 00:32
Show Gist options
  • Save allieus/4479945 to your computer and use it in GitHub Desktop.
Save allieus/4479945 to your computer and use it in GitHub Desktop.
Fibonachi Number
def cache(fn):
_cached = {}
def wrap(*args, **kwargs):
key = repr((args, kwargs))
if key not in _cached:
value = fn(*args, **kwargs)
_cached[key] = value
return _cached[key]
return wrap
@cache
def fib(n):
if n <= 0:
return 0
elif n == 1:
return 1
return fib(n-1) + fib(n-2)
import unittest
class TestFib(unittest.TestCase):
def test_fib(self):
self.assertEqual(fib(250), 7896325826131730509282738943634332893686268675876375)
if __name__ == '__main__':
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment