Files
Nim/tests/closure/tfib50.nim
2015-02-18 13:44:01 +01:00

23 lines
455 B
Nim

discard """
output: "20365011074"
"""
import tables
proc memoize(f: proc (a: int64): int64): proc (a: int64): int64 =
var previous = initTable[int64, int64]()
return proc(i: int64): int64 =
if not previous.hasKey i:
previous[i] = f(i)
return previous[i]
var fib: proc(a: int64): int64
fib = memoize(proc (i: int64): int64 =
if i == 0 or i == 1:
return 1
return fib(i-1) + fib(i-2)
)
echo fib(50)