Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -module(fib).
- -export([fib/1]).
- %% api
- %% @doc generates the fibonacci sequence - a naΓ―ve solution
- -spec fib(N::pos_integer()) -> {pos_integer(), [pos_integer()]}.
- fib(0) ->
- io:format("N must be greater than 0.\n");
- fib(N) ->
- fib(0, N, []).
- %% private
- fib(C, N, Acc) when C == N ->
- {hd(Acc), lists:reverse(Acc)};
- fib(C, N, Acc) ->
- fib(C+1, N, f(C+1, Acc)).
- %% helpers
- f(0, _Acc) -> [];
- f(1, Acc) -> [0] ++ Acc;
- f(2, Acc) -> [1] ++ Acc;
- f(N, Acc) -> [lists:nth(1, Acc) + lists:nth(2, Acc)] ++ Acc.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement