mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 18:02:05 +00:00
23 lines
455 B
Nim
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)
|