blob: 719aa3ad540e88202600d19175150fe4b4e9eccd (
plain) (
tree)
|
|
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)
|