fib.coffee @i=�{U sys = require('sys') crypto = require('crypto') key = (values) -> sha1 = crypto.createHash('sha1') sha1.update values.join('-') sha1.digest('hex') memoize = (f, memo = {} ) -> (args...) -> memo[k = key(args)] or memo[k] = f args... fib = (n) -> if n < 2 then n else fib(n-1) + fib(n-2) fib = memoize(fib) sys.p fib 10 sys.p fib 55 # cannot calculate without memo
![fib.coffee](https://cdn-ak-scissors.b.st-hatena.com/image/square/1ef26f6cb4349557952890dbe3e567f7f98dc151/height=288;version=1;width=512/https%3A%2F%2Fgithub.githubassets.com%2Fassets%2Fgist-og-image-54fd7dc0713e.png)