解题思路

实现题目的前后关系即可

代码

-spec fib(N :: integer()) -> integer().
fib(N) ->
    do_fib(2, #{0 => 0, 1 => 1}, N).

do_fib(Index, Map, N) when Index =< N ->
    Val = maps:get(Index - 1, Map) + maps:get(Index - 2, Map),
    do_fib(Index + 1, Map#{Index => Val}, N);
do_fib(_, Map, N) ->
    maps:get(N, Map).