diff options
Diffstat (limited to 'src/code/2/fib_itr.exs')
-rw-r--r-- | src/code/2/fib_itr.exs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/code/2/fib_itr.exs b/src/code/2/fib_itr.exs new file mode 100644 index 0000000..2eafcee --- /dev/null +++ b/src/code/2/fib_itr.exs @@ -0,0 +1,15 @@ +defmodule Fib do + def seq(0), do: 0 + def seq(1), do: 1 + def seq(n) when n > 1, do: compute_seq(n, 1, [0, 1]) + + defp compute_seq(n, i, acc) when n == i do + Enum.at(acc, length(acc) - 1) + end + defp compute_seq(n, i, acc) do + len = length(acc) + compute_seq(n, i + 1, acc++[Enum.at(acc, len-1) + Enum.at(acc, len-2)]) + end +end + +IO.puts Fib.seq(50) |