Skip to content

Instantly share code, notes, and snippets.

@nixpulvis
Last active June 26, 2018 18:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nixpulvis/76adcfca48b3a2c723213801e0076f7b to your computer and use it in GitHub Desktop.
Save nixpulvis/76adcfca48b3a2c723213801e0076f7b to your computer and use it in GitHub Desktop.
Fibonacci (again)
#!/usr/bin/env elixir
defmodule Math do
def fibfast(n) do fib_acc(1, 0, n) end
def fib_acc(a, b, 0) do a + b end
def fib_acc(a, b, n) do fib_acc(b, a+b, n-1) end
def fibslow(0) do 1 end
def fibslow(1) do 1 end
def fibslow(n) do fibslow(n-1) + fibslow(n-2) end
end
extract_args = fn() ->
System.argv() |> Enum.map(fn(n) ->
n |> Integer.parse() |> elem(0)
end)
end
print_fib = fn(n) ->
n |> Math.fibfast() |> IO.puts()
end
case extract_args.() do
[n] -> print_fib.(n)
[a, b] -> a..b |> Enum.each(print_fib)
_ -> IO.puts("argument error")
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment