summaryrefslogtreecommitdiff
path: root/src/code/2/fib_itr.exs
diff options
context:
space:
mode:
Diffstat (limited to 'src/code/2/fib_itr.exs')
-rw-r--r--src/code/2/fib_itr.exs15
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)